spring整合hibernate的详细步骤

小编 2026-07-14 阅读:1279 评论:0
  Spring整合hibernate需要整合些什么?由IOC容器来生成hibernate的se...

  Spring整合hibernate需要整合些什么?

    1. 由IOC容器来生成hibernate的sessionFactory.
    2. 让hibernate使用spring的声明式事务

整合步骤:

  • 加入hibernate:

    1.导jar包

    2.配置hibernate的配置文件,hibernate.cfg.xml.(其实可以省略这个配置文件,但还是加上比较舒服):

<?xml version="1.0"?><!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>    <!-- 配置hibernate的基本属性 -->        <!-- 配置数据源 ,因为需要把数据源配置到IOC容器中,所以这里不需要再配置-->        <!-- 配置数据库方言 -->        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>        <!-- 显示并格式化sql语句 -->        <property name="show_sql">true</property>        <property name="format_sql">true</property>        <!-- 自动生成数据库表结构 -->        <property name="hbm2ddl.auto">update</property>        <!-- 使用getCurrentSession方式打开会话 -->        <property name="hibernate.current_session_context_class">thread</property>                <!-- 关联的*.hbm.xml也在容器配置sessionFactory实例时在进行配置,这里也不再配置 -->    </session-factory></hibernate-configuration>

    3.编写持久化类以及对应的hbm.xml.

  • 加入Spring

    1.导入jar包.

    2.配置spring配置文件(重点,详见注释):

      beans.xml:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">    <!-- 导入资源文件 -->    <context:property-placeholder location="db.properties"        ignore-resource-not-found="false" />    <!-- 配置c3p0连接池 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="user" value="${jdbc.user}"></property>        <property name="password" value="${jdbc.password}"></property>        <property name="driverClass" value="${jdbc.driverClass}"></property>        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>    </bean>        <!--配置hibernate的SessionFactory实例,通过Spring提供的LocalSessionFactorybean进行配置  -->    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">            <!-- 配置数据源属性 -->        <property name="dataSource" ref="dataSource"></property>            <!-- 配置hibernate.cfg.xml的位置及名称-->        <property name="configLocation" value="hibernate.cfg.xml"></property>            <!-- 配置hibernate映射文件的位置及名称,可以使用通配符-->        <property name="mappingLocations" value="com/wang/entity/*.hbm.xml"></property>    </bean>    <!-- 配置Spring的声明式事务 -->        <!-- 1.配置事务管理器 -->        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">            <property name="sessionFactory" ref="sessionFactory"></property>        </bean>        <!-- 2.配置事务属性,需要事务管理器 -->        <tx:advice id="txAdvice" transaction-manager="transactionManager">            <tx:attributes>                <tx:method name="*"/>                <tx:method name="get*" read-only="true"/>            </tx:attributes>        </tx:advice>        <!-- 3.配置事务切点,并把切点和事务属性关联起来 -->        <aop:config>            <aop:pointcut expression="execution(* com.wang.service.*.*(..))" id="pointcut"/>            <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>        </aop:config></beans>

到此,配置工作就完成了,接下来可以测试一下代码,看看自动生成的数据库表.

   如果你选择不使用hibernate.cfg.xml,那么可以在上面的beans.xml中,删掉<property name="configLocation" value="hibernate.cfg.xml"></property>,同时添加以下代码: 

<property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>                <prop key="hibernate.show_sql">true</prop>                <prop key="hibernate.format_sql">true</prop>                <prop key="hibernate.hbm2ddl.auto">update</prop>            </props>        </property>

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表