zoukankan      html  css  js  c++  java
  • 整合Hibernate3.x

    As of Spring 3.0, Spring requires Hibernate 3.2 or later.

    Hibernate 3和Hibernate 4有一些区别,所以对于spring而已,集成Hibernate 3和集成Hibernate 4是不一样的,而且集成的方式有很多,这里只讲这一种基本的。

    现在讲解如何集成Hibernate 3

    1.导入Hibernate、Spring和log4j和dbcp的依赖包(log4j一定需要吗,等着去看孔浩的Hibernate视频)

      1.1导入Spring的依赖包

      1.2导入Log4j.jar的依赖包(Hibernate一定需要Log4j吗?)--->log4j-1.2.17.jar(还需要有log4j的配置文件log4j.properties)

      1.3导入dbcp的依赖包(配置DataSource需要,Spring整合JDBC中有提到)

      1.1导入Hibernate的依赖包

        对于Hibernate的包,在Hibernate的rar压缩文件里面做了很好的区分,在lib文件夹里面有几个文件夹,jpa,optional,required 等等

        (1)hibernate3.jar

        (2)optional是可选的意思,required是必须的意思,所以我们把required文件夹里面的包都考进来,optional文件夹的包我们暂时就不需要了

        (3)如果要支持Annotation,我们需要把jpa的包考进来

        (4)slf4j-api.jar(这个是做什么的)

    2.创建beans.xml

      2.1使用DBCP创建dataSource(和集成jdbc一样)

        <bean id="dataSource" class="org.apache.common.dbcp.BasicDataSource" destroy-method="close">

          <property name="driverClassName" value=""/>

          <property name="url" value=""/>

          <property name="username" value=""/>

          <property name="password" value=""/>

          <!--配置连接池的初始值-->

          <property name="initialSize" value="1"/>

          <!--配置连接池的最大值-->

          <property name="maxActive" value="100"/>

          <!--最大空闲时,当经过一个高峰之后,连接池可以将一些不用的连接释放,一直减少到maxIdle为止-->

          <property name="maxIdle" value="20"/>

          <!--最小空闲时,当连接少于minIdle时,会自动申请一些连接-->

          <property name="minIdle" value="1"/>

          <property name="maxWait" value="1000"/>

        </bean>

      2.2创建Hibernate的SessionFactory,我们不需要Hibernate的配置文件了

        <bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

          <!--注入数据源-->

          <property name="dataSource" ref="dataSource"/>

          <!--设置Spring去哪个包中查找相应的实体类-->

          <property name="packageToScan">

             <value>org.zttc.itat.model</value>

          </property>

          <!--此处也可以用如下的方式,只不过这里是需要些一个xml-->

          <property name="mappingResource">

            <list>

              <value>product.hbm.xml</value>

            </list>

          </property>

          <property name="hibernateProperties">

            <value>

              hibernate.dialect=org.hibernate.dialect.HSQLDialect

            </value>

            <!--此处也可以用另外一种方式-->

            <props>

              <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>

              <prop key="hibernate.show_sql">true</prop>

              <prop key="hibernate.hbmddl.auto">update</prop>

              <prop key="hibernate.format_sql">false</prop>

            </props>

          </property>

        </bean>

        <!--如果使用的是Annotation,不能使用LocalSessionFactoryBean,而应该使用org.springframework.orm.hibernate3.annotaition.AnnotationSessionFactoryBean,LocalSessionFactoryBean找不到setPackageToScan()方法-->


        <!--<bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">-->
        <bean id="SessionFactory" class="org.springframework.orm.hibernate3.AnnotationSessionFactoryBean">
    
    
    
    

          <!--注入数据源-->       <property name="dataSource" ref="dataSource"/>       <!--设置Spring去哪个包中查找相应的实体类-->       <property name="packageToScan">          <value>org.zttc.itat.model</value>       </property>       <!--此处也可以用如下的方式,只不过这里是需要些一个xml-->       <property name="mappingResource">         <list>           <value>product.hbm.xml</value>         </list>       </property>       <property name="hibernateProperties">         <value>           hibernate.dialect=org.hibernate.dialect.HSQLDialect         </value>         <!--此处也可以用另外一种方式-->         <props>           <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>           <prop key="hibernate.show_sql">true</prop>           <prop key="hibernate.hbmddl.auto">update</prop>           <prop key="hibernate.format_sql">false</prop>         </props>       </property>     </bean>

    3.为实体类添加Hibernate的Annotation或者hbm.xml文件

      3.1在类上面添加@Entity @Table(name="")

      3.2在主键上面添加@Id @GenerateValue

      3.3多对一 @ManyToOne @JoinColumn(name="")

    4.创建基于Hibernate的DAO

      4.1在相应的DAO中注入相应的SessionFactory

        @Resource(name=""),就可以把我们的sessionFactory注入进去。我们的SessionFactory,在前面已经用xml的方式在beans.xml中配置好了

        不再使用factory.openSession()开启session(常规方法),而应该是使用factory.getCurrentSession来打开Session,这个Session就会被spring所管理,此时,开发人员不用进行事务控制,也不用关闭Session,全部由Spring容器来完成。 

    5.配置Spring的事务处理,只有配置了事务处理之后,Spring才能有效的管理事务

      

    dom4j-1.6.1.jar:解析xml的包

      

  • 相关阅读:
    如何用Vault下载.Text 096的源代码
    新增QQ表情
    TortoiseCVS比WinCVS好用多了
    上周热点回顾(5.276.2)
    Couchbase的bug引起的缓存服务器CPU占用高
    云计算之路阿里云上:Linux内核bug引起的“黑色10秒钟”
    上周热点回顾(5.205.26)
    云计算之路阿里云上:拔云见日的那一刻,热泪盈眶
    云计算之路试用Azure:遭遇第一次故障
    上周热点回顾(5.135.19)
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5568667.html
Copyright © 2011-2022 走看看