spring集成hibernate由两种形式

1、继续使用Hibernate的映射文件*.hbm.xml

2、使用jpa形式的pojo对象, 去掉*.hbm.xml文件

一、继续使用Hibernate的映射文件*.hbm.xml

此时Spring的配置文件中的SeesionFactory需要使用org.springframework.orm.hibernate.LocalSessionFactoryBean

  1. <bean id="sessionFactory"
  2. class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
  3. <property name="dataSource" ref="dataSource" />
  4. <property name="hibernateProperties">
  5. <props>
  6. <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
  7. <prop key="hibernate.show_sql">true</prop>
  8. <prop key="hibernate.format_sql">true</prop>
  9. </props>
  10. </property>
  11. </bean>

LocalSessionFactoryBean可以用如下几个属性来寻找*hbm.xml文件

mappingResources、mappingLocations、mappingDirectoryLocations与mappingJarLocations

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

  1. /**
  2. * Set Hibernate mapping resources to be found in the class path,
  3. * like "example.hbm.xml" or "mypackage/example.hbm.xml".
  4. * Analogous to mapping entries in a Hibernate XML config file.
  5. * Alternative to the more generic setMappingLocations method.
  6. * <p>Can be used to add to mappings from a Hibernate XML config file,
  7. * or to specify all mappings locally.
  8. * @see #setMappingLocations
  9. * @see org.hibernate.cfg.Configuration#addResource
  10. */
  11. public void setMappingResources(String... mappingResources) {
  12. this.mappingResources = mappingResources;
  13. }

src根目录下的example.hbm.xml文件

  1. <property name="mappingResources">
  2. <value>example.hbm.xml </value>
  3. </property>

src/mypackage目录下的example.hbm.xml文件

  1. <property name="mappingResources">
  2. <value>mypackage/example.hbm.xml</value>
  3. </property>

2、mappingLocations,可以指定映射文件的路径,可以指定classpath路径下和其他文件夹下的映射文件

  1. /**
  2. * Set locations of Hibernate mapping files, for example as classpath
  3. * resource "classpath:example.hbm.xml". Supports any resource location
  4. * via Spring's resource abstraction, for example relative paths like
  5. * "WEB-INF/mappings/example.hbm.xml" when running in an application context.
  6. * <p>Can be used to add to mappings from a Hibernate XML config file,
  7. * or to specify all mappings locally.
  8. * @see org.hibernate.cfg.Configuration#addInputStream
  9. */
  10. public void setMappingLocations(Resource... mappingLocations) {
  11. this.mappingLocations = mappingLocations;
  12. }

指定WEB-INF/mappings目录下的example.hbm.xml映射文件文件

  1. <property name="mappingLocations">
  2. <value>WEB-INF/mappings/example.hbm.xml </value>
  3. </property>
  1. </pre><pre>

指定classpath下的example.hbm.xml映射文件

  1. <property name="mappingLocations">
  2. <value>classpath:example.hbm.xml </value>
  3. </property>

也可以使用*作为通配符

3、mappingDirectoryLocations,指定包含映射文件的文件夹的目录

  1. /**
  2. * Set locations of directories that contain Hibernate mapping resources,
  3. * like "WEB-INF/mappings".
  4. * <p>Can be used to add to mappings from a Hibernate XML config file,
  5. * or to specify all mappings locally.
  6. * @see org.hibernate.cfg.Configuration#addDirectory(java.io.File)
  7. */
  8. public void setMappingDirectoryLocations(Resource... mappingDirectoryLocations) {
  9. this.mappingDirectoryLocations = mappingDirectoryLocations;
  10. }

包含WEB-INF/mappings目录下的所有*hbm.xml映射文件

  1. <property name="mappingDirectoryLocations">
  2. <list>
  3. <value>WEB-INF/mappings</value>
  4. </list>
  5. </property>

也可以通过classpath来指出,此处包含classpath路径下的hbm包下的所有*.hbm.xml文件

  1. <property name="mappingDirectoryLocations">
  2. <list>
  3. <value>classpath:hbm/</value>
  4. </list>
  5. </property>

4、mappingJarLocations ,指定加载的映射文件在jar文件中

  1. /**
  2. * Set locations of jar files that contain Hibernate mapping resources,
  3. * like "WEB-INF/lib/example.hbm.jar".
  4. * <p>Can be used to add to mappings from a Hibernate XML config file,
  5. * or to specify all mappings locally.
  6. * @see org.hibernate.cfg.Configuration#addJar(java.io.File)
  7. */
  8. public void setMappingJarLocations(Resource... mappingJarLocations) {
  9. this.mappingJarLocations = mappingJarLocations;
  10. }

例如:

  1. <property name="mappingDirectoryLocations">
  2. <value>WEB-INF/lib/example.hbm.jar</value>
  3. </property>
  1. </pre><p></p><p><span style="line-height:30px"><span style="line-height:21px"><span style="font-family: FangSong_GB2312; font-size: 18px;"></span></span></span></p><p></p><p>二、使用jpa形式的pojo对象, 去掉*.hbm.xml文件</p><p>此时Spring的配置文件中的SeesionFactory需要使用<span style="color:rgb(255,0,0);">org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean</span></p><p>AnnotationSessionFactoryBean中查找jpa注解形式的pojo映射对象的属性有:annotatedClasses、packagesToScan</p><p>1、annotatedClasses:指定classpath下指定的注解映射实体类的类名</p><p><pre name="code" class="java">/**
  2. * Specify annotated classes, for which mappings will be read from
  3. * class-level annotation metadata.
  4. * @see org.hibernate.cfg.AnnotationConfiguration#addAnnotatedClass(Class)
  5. */
  6. public void setAnnotatedClasses(Class<?>... annotatedClasses) {
  7. this.annotatedClasses = annotatedClasses;
  8. }
  1. <property name="annotatedClasses"> <list> <value>com.anyview.entities.ClassTable</value> <value>com.anyview.entities.ClassStudentTable</value> </list> </property>

2、 packagesToScan指定映射文件的包名

  1. /**
  2. * Specify packages to search using Spring-based scanning for entity classes in
  3. * the classpath. This is an alternative to listing annotated classes explicitly.
  4. * <p>Default is none. Specify packages to search for autodetection of your entity
  5. * classes in the classpath. This is analogous to Spring's component-scan feature
  6. * ({@link org.springframework.context.annotation.ClassPathBeanDefinitionScanner}).
  7. */
  8. ublic void setPackagesToScan(String... packagesToScan) {
  9. this.packagesToScan = packagesToScan;
    1. <property name="packagesToScan" value="com/anyview/entities/"></property></strong></span>

Spring整合Hibernate之AnnotationSessionFactoryBean与LocalSessionFactoryBean的更多相关文章

  1. Spring框架学习(4)spring整合hibernate

    内容源自:spring整合hibernate    spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类Hiber ...

  2. Spring整合Hibernate报错:annotatedClasses is not writable or has an invalid setter method

    Spring 整合Hibernate时报错: org.springframework.beans.factory.BeanCreationException: Error creating bean ...

  3. 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】

    一.Spring整合Hibernate 1.如果一个DAO 类继承了HibernateDaoSupport,只需要在spring配置文件中注入SessionFactory就可以了:如果一个DAO类没有 ...

  4. spring整合hibernate的详细步骤

    Spring整合hibernate需要整合些什么? 由IOC容器来生成hibernate的sessionFactory. 让hibernate使用spring的声明式事务 整合步骤: 加入hibern ...

  5. spring整合hibernate

    spring整合hibernate包括三部分:hibernate的配置.hibernate核心对象交给spring管理.事务由AOP控制 好处: 由java代码进行配置,摆脱硬编码,连接数据库等信息更 ...

  6. Spring 整合 Hibernate

    Spring 整合 Hibernate •Spring 支持大多数流行的 ORM 框架, 包括 Hibernate JDO, TopLink, Ibatis 和 JPA. •Spring 对这些 OR ...

  7. 使用Spring整合Hibernate,并实现对数据表的增、删、改、查的功能

    1.1 问题 使用Spring整合Hibernate,并实现资费表的增.删.改.查. 1.2 方案 Spring整合Hibernate的步骤: 1.3 步骤 实现此案例需要按照如下步骤进行. 采用的环 ...

  8. Spring整合Hibernate详细步骤

    阅读目录 一.概述 二.整合步骤 回到顶部 一.概述 Spring整合Hibernate有什么好处? 1.由IOC容器来管理Hibernate的SessionFactory 2.让Hibernate使 ...

  9. SSH整合之spring整合hibernate

    SSH整合要导入的jar包: MySQL中创建数据库 create database ssh_db; ssh_db 一.spring整合hibernate带有配置文件hibernate.cfg.xml ...

随机推荐

  1. apache lucene solr 官网历史版本下载地址

    官网上一般只提供最新版本的下载,下面两个链接为所有历史版本的下载地址: lucene地址:archive.apache.org/dist/lucene/java/ solr地址:archive.apa ...

  2. [Linux][VMWare] 学习笔记之安装Linux系统-网络配置

    最近开始折腾Linux,在本机装了个VMWare和Centos,装完之后虚拟机里面的OS可以上网,但是使用SecureCRT连接不上虚拟机,开始折腾这个网络. vmware安装好以后,会自动添加两张网 ...

  3. Vue#计算属性

    在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需要多于一 ...

  4. 通信原理实践(四)——模拟通信系统性能分析

    一.模拟通信系统性能分析 1.系统框图 2.信噪比定义 (1)输入信噪比: (2)输出信噪比: (3)调制制度增益: 3.模拟通信系统分析等价模型 即自己产生一个高斯白噪声,加入到调制信号,然后在送入 ...

  5. FastDFS简介

    一.FastDFS概述: FastDFS是一个开源的轻量级分布式文件系统,他对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.下载)等,解决了大容量存储和负载均衡的问题,高度追求高性能 ...

  6. Adobe Flash Media Server安装

    Flash Media Server(FMS)是一个流媒体服务器 使用 实时消息传送协议(RTMP),RTMP是一种未加密的TCP/IP协议,专门设计用来高速传送音频.视频和数据信息. 3.5版32位 ...

  7. 使用dSYM分析App崩溃日志

    前言 我们在开发App过程中,因为连接到控制台,所以遇到问题会很容易找到问题代码.但是对于线上的App出现Crash的时候,我们不可能通过这种方式,也不现实,所以我们只能通过收集Crash信息,来解决 ...

  8. java中 ==与equals 有什么区别?

    1.==既可以比较基本类型变量,又可比较引用类型变量,而equals只能比较引用类型变量: 2.equals方法支持重写,如果未重写equals方法,则比较引用变量时与==都是比较变量所指向的对象地址 ...

  9. LSM树由来、设计思想以及应用到HBase的索引

    讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储系统为key-value存储 ...

  10. WordPress用户注册无法发送密码邮件怎么回事?

    wordpress无法发送电子邮件.可能原因:您的主机禁用了 mail() 函数 等等几句话.在网上一搜,很快找到了解决方案:使用wp-mail-smtp插件. 一.插件下载安装.可以在wordpre ...