一个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集合属性。要实现双向多对多关联,必须在使用中间表来实现两个实体间的关联关系。

Hibernate之核心文件的更多相关文章

  1. hibernate学习三 精解Hibernate之核心文件

    一 hibernate.cfg.xml详解 1 JDBC连接: 2 配置C3P0连接池: 3 配置JNDI数据源: 4 可选的配置属性: 5 hibernate二级缓存属性 6 hibernate事务 ...

  2. Hibernate学习笔记(2)---hibernate核心文件

    配置hibernate.cfg.xml hibernate配置文件包含连接持久层与映射文件所需的基本信息.配置文件名默认为hibernate.cfg.xml. hibernate.cfg.xml文件配 ...

  3. hibernate.cfg.xml文件的配置模板和不同数据库的配置參数

    (1)hibernate.cfg.xml文件的配置模板 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

  4. hibernate系列笔记(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  5. Hibernate学习笔记(4)---hibernate的核心接口

    Configuration类 该类主要是读取配置文件,启动hibernate,并负责管理hibernate的配置信息,一个程序只创建一个Configuration对象. Configuration类操 ...

  6. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  7. Hibernate的核心对象关系映射

    Hibernate的核心就是对象关系映射: 加载映射文件的两种方式: 第一种:<mapping resource="com/bie/lesson02/crud/po/employee. ...

  8. Hibernate.编写xml文件无自动提示信息

    Hibernate.编写xml文件无自动提示信息 注意: 配置 xxxx.hbm.xml 文件的自动提示.和配置 hibernate.cfg.xml 文件的提示,操作步骤是一样的.只是复制的文件内容. ...

  9. Hibernate的核心配置

    Hibernate的设计思路 Hibernate是一种全自动化管理持久化对象的ORM框架,既提供了完全面向对象的封装完整的对象持久化接口(屏蔽db层的差异化,提升代码可移植性),也提供了操作HQL和S ...

随机推荐

  1. r指定位置插入一列数值

    y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8),x3=c(11,12,13,14),x4=c(15,16,17,18)) da ...

  2. javascript实现记录文本框内文字个数

    最近在做一个项目中遇到这样一个问题,要对文本框中用户输入的文字进行记数,在下面显示出来,因为我们做的是一个短信发送平台,现在我们国家的短信服务,如果你的信息超过了70个字符,短信就会按二条给你下发.所 ...

  3. 关于Cocos2d-x的瓦片地图

    1.cocos2d-x的瓦片地图是用Tiled地图编辑器做的,这个软件开源,免费,一般都是用它制作瓦片地图. 2.瓦片地图是由块层和对象组成的,块层的作用是显示和一些重叠的时候覆盖角色的作用,而对象是 ...

  4. 百度搜索_Selenium WebDriver 环境搭建和错误调试_chromedriver_win32必须下载否则无法测试chrome

    转自:  http://www.360doc.com/content/14/0821/18/597197_403634783.shtml zTree 东西不多,我也一直使用着原始的人工测试手段,随着内 ...

  5. awk基础命令

    1. 命令awk简介 a. awk是一种编程语言,用于对文本和数据进行处理. b.具有强大得文本格式话能力 c.利用命令awk,可以将一些文本整理成需要的格式. d.命令awk是逐行进行处理的 2. ...

  6. 利用base64展示图片

    其实很简单,格式如下: <img src="data:image/jpg;base64,具体的编码值" /> 支持的类型有: data:,文本数据 data:text/ ...

  7. par函数col参数-控制颜色

    col参数用来控制颜色,其实有一些列的颜色相关的参数,都是以col 开头 col : 控制图片中点,文字以及绘图边框的颜色,代码示例: par(col = "red") plot( ...

  8. 抽象工厂模式(abstract factory pattern)------创造型模式

    创建型模式:抽象工厂模式 引入概念: 1.产品等级结构:当抽象的产品由具体的工厂生产出不同的产品时,这些归属与同一类的抽象产品就构成了产品等级结构: 2.产品族:具体的工厂可以生产出来的不同产品就构成 ...

  9. 【Mongo】聚合函数

    http://blog.csdn.net/miyatang/article/details/20997313 SQL Terms, Functions, and Concepts MongoDB Ag ...

  10. NGUI之Toggle实现单选框

    一:使用步骤——创建一个checkboxes 1.首先在UI Root下建立一个Sprite,设置一张贴图,当作按钮的背景. 然后为其添加碰撞组件和Toggle组件 2.为第一个Sprite建立一个子 ...