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. HTML5——摒弃插件和前端框架的异步文件上传

    之前我从来没有体会到HTML5的便利,直到这次需要一个异步上传的功能功能.一开始我以为文件的一些声明必须为HTML5才管用,后来才知道添加了很多以前没有的标签,并可以直接播放视频,音频等.可以不再使用 ...

  2. CG&CAD resource

    Computational Geometry The Geometry Center (UIUC) Computational Geometry Pages (UIUC) Geometry in Ac ...

  3. Mesa 3D

    Mesa 3D是一个在MIT许可证下开放源代码的三维计算机图形库,以开源形式实现了OpenGL的应用程序接口. OpenGL的高效实现一般依赖于显示设备厂商提供的硬件,而Mesa 3D是一个纯基于软件 ...

  4. ubuntu初始化root帐号密码

    Ubuntu Kylin 14.04的安装过程中并没有提供设置root密码的过程,取而代之的是自定义的帐号. 如果我们需要使用到root帐号或者root权限,则需要重新设置root帐号的密码. 设置方 ...

  5. Codeforces Round #276 (Div. 1) E. Sign on Fence 二分+主席树

    E. Sign on Fence   Bizon the Champion has recently finished painting his wood fence. The fence consi ...

  6. 【rqnoj378】 约会计划

    题目描述 cc是个超级帅哥,口才又好,rp极高(这句话似乎降rp),又非常的幽默,所以很多mm都跟他关系不错.然而,最关键的是,cc能够很好的调解各各妹妹间的关系.mm之间的关系及其复杂,cc必须严格 ...

  7. Codeforces Round #130 (Div. 2) C. Police Station

    题目链接:http://codeforces.com/contest/208/problem/C 思路:题目要求的是经过1~N的最短路上的某个点的路径数 /  最短路的条数的最大值.一开始我是用spf ...

  8. Emacs 之窗口管理

    // */ // ]]> Emacs 之窗口管理 Table of Contents 1. Emacs 窗口相关 1.1. Emacs 里调整 window 大小 1.2. Emacs winn ...

  9. Zookeeper 初体验之——伪分布式安装(转)

    原文地址: http://blog.csdn.net/salonzhou/article/details/47401069 简介 Apache Zookeeper 是由 Apache Hadoop 的 ...

  10. pythonpython-eggs异常解决方法

    : UserWarning: /home/server/.python-eggs is writable by group/others and vulnerable to attack when u ...