一个Hibernate项目核心配置文件主要分为以下三个方面:1、配置文件hibernate.cfg.xml;2、配置文件*.hbm.xml,此文件一般包括映射文件的结构以及各种属性的映射方式;3、Hibernate关联关系映射。

1、配置文件hibernate.cfg.xml文件

  

 <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0 //EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置数据库JDBC驱动 -->
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 配置数据库连接URL -->
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/mysqldb
</property>
<!-- 配置数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 配置数据库密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 输出运行时生成的SQL语句 -->
<property name="show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.cache.use_second_level_cache">
true
</property>
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<!-- 配置数据库方言 -->
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 列出所有的映射文件 -->
<mapping resource="org/hibernate/entity/User.hbm.xml" />
</session-factory>
</hibernate-configuration>

hibernate.cache.use_second_level_cache 是hibernate的二级缓存属性。Hibernate共有两级缓存,第一级缓存是Session级的缓存,它是事务范围的缓存,可以由Hibernate自动管理。第二级缓存是由SessionFactory管理的进程级缓存,可以在配置文件中进行配置和更改,而且可以动态加载和卸载。其他相关属性,需要查找相关资料,这里不一一列举。

2、映射文件*.hbm.xml

  映射文件用于向Hibernate提供将对象持久化到关系数据库中的相关信息,每个Hibernate映射文件结构基本相同,根元素都为hibernate-mapping元素,Hibernate-mapping元素下面又可以包含多个class子元素,每个子元素都对应着一个持久化的映射。

hibernate映射文件里有很多元素,元素里又包含不同的属性,这里只列举一部分:

(1)Hibernate-mapping元素。该元素定义了XML配置文件的基本属性。

  I、default-access = "field | property |ClassName " :指定Hibernate用来访问属性时所使用的策略,可以通过实现PropertyAccessor接口来自定义属性访问策略。该属性可选,默认值为Property。当为property时,使用getter和setter方法访问成员变量,当值为"field"时,使用反射访问成员变量。

  II、default-lazy: 指定是否采用延迟加载策略,改属性默认值为true,即采用延迟加载策略。

(2)class元素。用来声明一个持久化类,通过它可以定义Java持久化类与数据表之间的映射关系。<class>元素中包含的主要属性有:

  I、name属性:持久化类或者接口的全限定名。

  II、table属性:持久化类对应的数据库表名。

(3)Id元素。此标识属性映射到持久化对应的数据库表中的主键列。

   此元素里最重要的一个是它包含了一个可选的<generator>子元素。generator元素指定了主键的生成方式。对于不同的数据库和业务,其主键生成策略往往不同,Hibernate提供了几个内置的主键生成器策略:

    increment: 用于long、short或int类型主键生成唯一的标识。只有当没有其他进程想同一张表中插入数据是才可用,不能再集群环境下使用

    identity   : 采用底层数据库本身提供的主键生成机制,改生成器要求在数据库中把主键定义为自增长(identity)类型,返回的标识符类型为long、int或short。

    sequence: 在支持序列(sequence)的数据库中可以使用该生成策略创建唯一标识。返回的标识符类型为long、short或int

    hilo     :   使用一个高/低位算法高效地生成long、short和int类型的标识符。

    native     :  依据底层数据库的能力在identity、sequence、hilo3种生成器中选择一种。

    assigned :  让应用程序在save()方法调用前为对象分配一个标识符。如果不指定id 元素的generator属性,则默认使用该主键生成器策略。

    foreign    :   使用另一个关联对象的标识属性。常用在1-1主键关联映射中。

(4)property元素映射普通属性

  <property name="username" column = "NAME" type="java.lang.String" />

(5)映射集合属性

  根据java集合的特点,Hibernate中可以分为如下几种集合类映射:

   <set>    :  无序,通常用于一对多或者多对多关联关系映射。

   <list>    :  有序,必须要有一个索引字段。

   <map>  :  无序,必须要有一个映射关键字字段

   <bag>   :  有序,必须要有一个索引字段

     <array> :  有序,必须要有一个索引字段

3、Hibernate关联关系映射

  Hibernate关联关系可以分为单向关联和双向关联两大类。单向关联可以分为一对一、一对多、多对一和多对多四种关联方式。多向关联可以分为一对一、一对多、多对多3种关联方式。

(1)单向的一对一关联。其又可以分为两类,分别是通过主键关联和通过外键关联。

  I、通过主键关联。一对一的关联可以通过主键关联,但基于主键关联的持久化类(其对应的数据表称为从表)却不能拥有自己的主键生成策略,这是因为从表的主键必须由关联类(其对应的数据表称为主表)来生成。此外,要在被关联的持久化类的映射文件中添加one-to-one元素来指定关联属性,并为one-to-one元素指定constrained属性值为true,此表表明从表的主键由关联类生成。

  II、通过外键关联。通过外键关联时两张数据表的主键是不同的,通过在一张表中添加外键列来保持一对一的关系,配置外键关联关系时需要使用many-to-one元素,因为通过外键关联的一对一关系,本质上时一对多关系的特例,因此,只需在many-to-one元素中增加unique=”true"属性即可,这相当于在多的一端增加了唯一性的约束

(2)单向的一对多关联。单向的一对多关联映射关系主要是通过外键来关联的,一对多的关联映射是在表示“多”的一方的数据表中增加一个外键,并由“一”的一方指向“多”的一方。单向一对多关联的持久化类里需要包含一个集合属性,在“一”的一方访问“多”的一方时,“多”的一方将以集合的形式体现。

(3)单向的多对一关联。单向的多对一关联映射也是通过外键来关联的。多对一的映射方式类似一对多的映射方式,不过它的映射关系是由“多”的一方指向“一”的一方。在表示“多”的一方的数据表中增加一个外键来指向表示“一”的一方数据表,“一”的一方作为主表,“多”的一方作为从表。

(4)单向的多对多关联。多对多关系在数据库中是比较常见的,它利用中间表将两个主表关联起来,中间表的作用是将两张表的主键作为其外键,通过外键建立者两张表之间的映射关系。

(5)双向的一对一关联

  I、通过主键关联。通过主键关联的双向一对一映射,在需要一方的配置文件中将主键生成策略配置成foreign,即表示需要根据另一方的主键来生成自己的主键,而该实体本身不具有自己的主键生成策略。一对一主键映射在双向的一对一映射中应用比较多。

  II、通过外键关联的双向一对一映射,外键可以放在任意一方。在存放外键一方的映射文件中,需要添加many-to-one元素,并为该元素添加unique=“true”属性,而另外一方的配置文件中需要添加one-to-one元素,并使用其name属性来指定关联属性名。此时,存放外键的一方对应的数据表为从表,而另一方对应的数据表变为主表。

(6)双向的一对多关联。双向的一对多关联在“多”的一方要增加新属性以引用关联实体,在“一”的一方则增加集合属性,该集合中包含“多”一方的关联实体。双向的一对多关联和双向的多对一关联实际上是完全相同的。

(7)双向的多对多关联。双向的多对多关联,两端都要添加Set集合属性。要实现双向多对多关联,必须在使用中间表来实现两个实体间的关联关系。

最新文章

  1. ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档
  2. JqueryEasyUI之DataGrid扩展
  3. mac 终端常用命令
  4. HttpUrlConnection
  5. javascript控制开始日期,和结束日期在同一个月
  6. MAXIMO移动解决方案在库存管理中的PDA应用系统
  7. 2010 word 如何新建目录
  8. Web Api 入门
  9. 关于aspx模板页面元素路径的问题,以及对模板页面的理解
  10. struts -执行流程
  11. Visual Studio 2015开发Android App问题集锦
  12. 玲珑杯 Round #11 (1001 1004 1007)
  13. QT_FORWARD_DECLARE_CLASS
  14. python 一篇搞定所有的异常处理
  15. linux的自有(内置)服务
  16. 【安富莱二代示波器教程】第18章 附件C---波形拟合
  17. 选择排序&lt;C#&gt;
  18. SQL语句整理
  19. codeforces #541 D. Gourmet choice(拓扑+并查集)
  20. 源代码安装-非ROOT用户安装软件的方法

热门文章

  1. 验证url 地址是否是图片
  2. Windoows窗口程序五
  3. 关于Cocos2d-x中数据的存储提取和类型转换
  4. VC dimension(Vapnik-Chervonenkis dimension)
  5. CentOS下 Uptime 命令
  6. OpenGL模板缓冲区与模板测试
  7. Emojis support in Apple push notification
  8. c++ 用构造函数
  9. 分配All AD User到SharePoint Group中
  10. VMware Host Agent服务不能正常启动