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的包

  

整合Hibernate3.x的更多相关文章

  1. Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)

    一.缘由 上一篇文章Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法介绍到了怎么样在Sping.MyBatis.Hibernate整合的应用中动 ...

  2. Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法

    一.开篇 这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能.所以在出来数据库方言的时候基 ...

  3. spring2.5整合hibernate3.0整合Struts

    首先:这是spring framework+hibernate+struts集成,spring主要用于aop和ioc,hibernate主要是用于持久层,struts主要是用于mvc. 同时关于spr ...

  4. Spring4.0整合Hibernate3 .6

    转载自:http://greatwqs.iteye.com/blog/1044271 6.5  Spring整合Hibernate 时至今日,可能极少有J2EE应用会直接以JDBC方式进行持久层访问. ...

  5. Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源方法

    一.开篇 这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能.所以在出来数据库方言的时候基 ...

  6. 简易的CRM系统案例之Struts2&Spring整合+Hibernate3+JSP+MySQL版本

    主要对上一篇Struts2&Spring整合的改造 简易的CRM系统案例之Struts2+Hibernate3+JSP+MySQL版本 src/bean.xml <beans xmlns ...

  7. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...

  8. spring2.5整合hibernate3.0

    第一步:配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  9. Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory

    一.摘要 上两篇文章分别介绍了Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法 和 Spring3 整合Hibernate3.5 动态切换Ses ...

随机推荐

  1. GloVe词分布式表示

    GloVe 模型介绍 下面的内容主要来自https://blog.csdn.net/u014665013/article/details/79642083 GloVe的推导 GloVe是基于共现信息来 ...

  2. Multi-Dimensional Recurrent Neural Networks

    Multi-Dimensional Recurrent Neural Networks The basic idea of MDRNNs is to replace the single recurr ...

  3. javascript学习笔记 - 引用类型 RegExp

    四 RegExp 格式: var expression = / pattern / flags; 1.flags 为标志.分别为g.i.m. g:表示全局模式.即模式将匹配所有的字符串,而不是在发现第 ...

  4. Key-value数据库:Redis缓存服务

    Redis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.其提供了多种主流语言的客户端,方便使用:同时Redis支持主 ...

  5. 【bzoj1043】[HAOI2008]下落的圆盘 计算几何

    题目描述 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周长.看下面这副图, 所有的红色线条的总长度即为所求. 输入 第一行为1个整数n,N<=1000接下来n行每行3个实 ...

  6. 【bzoj4753】[Jsoi2016]最佳团体 分数规划+树形背包dp

    题目描述 JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了 ...

  7. 【Luogu】P1472奶牛家谱(DP)

    题目链接 这是一道考思维的好题. 一开始设f[i][j]是i个点刚好j层的方案数,死活调不出来,看题解发现可以改为<=j层的方案数,最后输出f[n][m]-f[n][m-1]就好了. 对于计算考 ...

  8. HDU——1073Online Judge(string类以及其对应函数)

    Online Judge Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  9. 北京集训TEST12——PA( Mortal Kombat)

    题目: Description 有一天,有N个外星人企图入侵地球.地球派出全球战斗力最强的M个人代表人类对抗外星人.根据外星的战斗规则,每个外星人应该分别与一名地球人对战(不同的外星人要与不同的地球人 ...

  10. jenkins使用xvfb插件构建虚拟化显示屏自动化测试

    1.linux服务器安装xvfb,并启动 参考我的博客:http://www.cnblogs.com/lincj/p/5468505.html 或者网上搜索一下进行安装 2.jenkins安装xvfb ...