Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置

spring对hibernate配置文件hibernate.cfg.xml的集成相当好,可以在Spring中配置Hibernate的SessionFactory从而取代Hibernate.cfg.xml和HibernateSessionFactory.java

Spring在集成Hibernate时又分为两种形式:(集成后就不需要Hibernate.cfg.xml了)
1、继续使用Hibernate的映射文件*.hbm.xml
2、使用jpa注解形式的pojo对象,而去掉*.hbm.xml的Hibernate映射文件

1、继续使用Hibernate的映射文件*.hbm.xml时扫描映射文件的方法

Spring集成Hibernate时去掉了Hibernate.cfg.xml,此时如果还继续使用Hibernate的映射文件*.hbm.xml的话,在配置Hibernate的SessionFactory时就要配置以何种方式寻找Hibernate映射文件*.hbm.xml

此时spring中配置SessionFactory bean时它对应的class应为org.springframework.orm.hibernate.LocalSessionFactoryBean
例如:

  <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" /><!-- 引用数据源 -->
        <property name="mappingDirectoryLocations">
            <list>
                <value>classpath:com/cn/nos/services/pojo/</value><!-- 加载hibernate的映射文件*.hbm.xml -->
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <!--<prop key="hibernate.current_session_context_class">thread</prop>-->
            </props>
        </property>
    </bean>

LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件:mappingResources、mappingLocations、mappingDirectoryLocations与mappingJarLocations

他们的区别:

① mappingResources:指定classpath下具体映射文件名

<property name="mappingResources">    
    <value>petclinic.hbm.xml </value>    </property>

② mappingLocations:可以指定任何文件路径,并且可以指定前缀:classpath、file等

<property name="mappingLocations">    
    <value>/WEB-INF/petclinic.hbm.xml </value>    </property>    <property name="mappingLocations">    
    <value>classpath:/com/company/domain/petclinic.hbm.xml </value>    </property>

也可以用通配符指定,'*'指定一个文件(路径)名,'**'指定多个文件(路径)名,例如:

<property name="mappingLocations">    
    <value>classpath:/com/company/domainmaps/*.hbm.xml </value>    </property>

上面的配置是在com/company/domain包下任何maps路径下的hbm.xml文件都被加载为映射文件

③ mappingDirectoryLocations:指定映射的文件路径

<property name="mappingDirectoryLocations">   <list>    
    <value>WEB-INF/HibernateMappings</value>    
  </list>    </property>

也可以通过classpath来指出

<property name="mappingDirectoryLocations">    
  <list>    
  <value>classpath:/XXX/package/</value>    
  </list>    </property>

④ mappingJarLocations:指定加载的映射文件在jar文件中

2、使用jpa注解形式的pojo对象,而去掉*.hbm.xml的Hibernate映射文件 时配置的方法

Spring集成Hibernate时去掉了Hibernate.cfg.xml,此时如果使用jpa注解形式的pojo对象,而去掉Hibernate的映射文件*.hbm.xml的话,在配置Hibernate的SessionFactory时就要配置以何种方式寻找jpa注解形式的pojo映射对象

此时spring中配置SessionFactory bean时它对应的class应为org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

例如:

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource" /><!-- 引用数据源 -->
        <property name="packagesToScan">
            <list>
                <value>com.cn.nos.services.pojo*</value><!-- 加载hibernate的jpa注解形式的实体类 -->
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <!--<prop key="hibernate.current_session_context_class">thread</prop>-->
            </props>
        </property>
    </bean>

AnnotationSessionFactoryBean中查找jpa注解形式的pojo映射对象的属性有:annotatedClasses、packagesToScan

① annotatedClasses:指定classpath下指定的注解映射实体类的类名

<property name="annotatedClasses">
     <list>
       <value>com.test.ObjectBean</value><!-- 可以在这个list中配置多个 -->
     </list></property>

② packagesToScan指定映射文件的包名

<property name="packagesToScan">
    <list>
       <value>com.cn.nos.services.pojo*</value><!-- 加载hibernate的jpa注解形式的实体类 -->
    </list></property>
分享到: 1赞

spring 中 hibernate 的 2种 配置方式(新旧 2种方式)的更多相关文章

  1. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  2. Spring 框架的概述以及Spring中基于XML的IOC配置

    Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...

  3. 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

    Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法    获取Class类实例的方法:   类名.class   实例名.getClass()   Class.forNam ...

  4. (4) Spring中定时任务Quartz集群配置学习

    原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本. ...

  5. Spring中Druid链接池的配置

    本文记录了使用Druid的方法, 包括Spring和Spring boot中使用Druid的配置方法. Spring中配置Druid连接池 以链接mysql为例 1 添加druid依赖 <dep ...

  6. Spring整合Hibernate的XML文件配置,以及web.xml文件配置

    利用Spring整合Hibernate时的XML文件配置 applicationContext.xml <?xml version="1.0" encoding=" ...

  7. spring中afterPropertiesSet方法与init-method配置描述

    1. InitializingBean.afterPropertiesSet()Spring中InitializingBean接口类为bean提供了定义初始化方法的方式,它仅仅包含一个方法:after ...

  8. Spring中使用Quartz之MethodInvokingJobDetailFactoryBean配置任务

    Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz. Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,i ...

  9. spring中的aop的xml配置方式简单实例

    aop,即面向切面编程,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁来记录和歌颂呢,当然不会是自己了,这个完全可以由诗人去歌颂,比如当骑士出征 ...

随机推荐

  1. Spring总结————spring核心Core

    一.spring的概念 spring是一个开源的,轻量级控制反转和面向切面的容器框架,解决企业应用开发的复杂性,降低耦合,更易于测试. spring春天.如果写一个小的项目,我们可以在项目中想创建一个 ...

  2. java基础-对集合(Collection)的总结

    集合(Collection)类型也是Java标准库中被使用最多的类型. List ArrayList LinkedList 对于自定义的对象,需要正确覆写 equals方法 参看7.3 例子 Map ...

  3. JDBC(二)

    ##  详解JDBC各个对象 1.DriverManager对象:驱动管理对象 *  功能: 1.注册驱动:告诉程序该使用哪个数据jar包 static  void  registerDriver(D ...

  4. 【2019南昌网络赛】B-Fire-Fighting Hero

    题目链接 分析 英雄方面很简单,跑一遍 Dijkstra 就行了,但是灭火团队就有点麻烦了. 这里可以借助一下最大流的建边来解决这个问题: 我们可以另外找一个点作为起点,然后建立从那个点到每一个团队的 ...

  5. 2019牛客多校第四场 A meeting

    链接:https://ac.nowcoder.com/acm/contest/884/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言10485 ...

  6. Unity 游戏框架搭建 2019 (十三~十五) 接下来要学什么?& 第九个示例

    在之前的两篇中,我们使用 public 静态方法对之前的内容进行了一个抽取,有了 public 静态方法这个工具,我们的学习行为也发生了一点变化. 在没使用 public 关键字之前呢,每一个示例仅仅 ...

  7. 使用Docsify做文档网站的详细配置教程

    使用Docsify做文档网站的详细配置教程 作者:xhemj 没错,它叫Docsify. xhemj的文档中心就是用这个写的 开源地址:https://github.com/docsifyjs/doc ...

  8. python之装饰器的进阶

    一.带参数的装饰器 (必须会) 针对不同的app的验证,比如:天猫和天猫超市,京东商城和京东超市 def wrapper_out(n): print(n) def wrapper(f): def in ...

  9. gold 波浪

  10. 使用nginx访问FastDFS

    文中所有~~~均为同一个自定义文件夹名字,一般使用项目名称 2.1.为什么需要用Nginx访问? FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要 ...