struts2+hibernate3+spring2读书笔记10(Hibernate配置文件)
第11章 Hibernate配置文件
一.配置hibernate.cfg.xml
Hibernate运行时需要获取一些数据库的基本信息,包括数据库URL、数据库用户名、数据库密码、数据库JDBC驱动类和数据库dialect等。
1.几种常用数据库的hibernate.cfg.xml配置
(1)mysql
(2)SQL Server
(3)Oracle
2.hibernate.cfg.xml连接配置
(1)JNDI连接池
(2)C3PO连接池
(3)dpcp连接池
二.Hbm.xml文件基本配置
1.映射文件的文档类型定义(DTD)
(1)hibernate-mapping根元素,该元素可存在0到多个meta、typedef、import等元素,它的具体属性如下:
?default-cascade:设置默认的层叠样式
?default-lazy:设定默认的延迟加载方式
?package:该属性用于设置包的类名,在默认情况下,hibernate-mapping 的子元素class需要提供完整的类名,当有多个class文件或class中包含了很多关联映射时,这种方式很烦锁。若设定了hibernate-mapping的package的值,则将简化一部分工作。
(2)class元素,它常用的属性如下:
?name:类名,当未指定package时,类名需要将包的全部路径包含在内,否则只需给出类名
?table: 对应的数据表的名称,例如SEC_USER
?schema:设置命名空间。
(3)id元素(主键能为空,主键必须唯一,主键值永远不变),它常用属性如下:
?name:在映射的pojo类中的名称。
?colum:在数据库的表中对应的字段名称
?type:对应的pojo类中的类型
MySQL中自增主键的配置如下:
5.编写tb1_user表对应的pojo类:User.java
三.配置一对多关联
1.多对一关联配置,配置User.java和User.hbm.xml
?User.java
备注:<many-to-one../>元素的常用属性
?name:持久化类中的属性名,在本例中为User.java中的dept属性
?column:设定与持久化类的属性对应的关系数据库表中的关键,在本例中为deptId
?class: 对应的持久化类,在本例中为Dept
?not-null:该属性是否允许为空,值可为true或false.当为true时,表示该属性不允许为null,默认为false.
2.一对多关联关系配置—配置Dept.java和Dept.hbm.xml
?Dept.java
备注:在映射关系中,一对多的关联采用<set../>其具体属性如下:
?name:设定持久化类的属性名,在本例中为users
?cascade:表示级联的属性,若设置为“save-update”,表示级联保存和更新
?order-by:设定取得的集合的排序方式,若设置为loginName,表示按照用户对象的loginName属性进行排序
?lazy:是否为立即加载,值可为true或false,当设置为true时,表示立即加载集合对象,默认值为false.
四.配置一对一关联
1.配置一对一“主键关联”
(1)编写数据库脚本scripts-one-to-one-way1.sql
具体脚本如下:
(4)编写UserExt.java
2.一对一“唯一处键关联”配置
(1)数据库脚本
(4)编写User.java
备注:one-to-one元素的property-ref指定为user,表明tb1_user_ext表引用了tb1_user的主键作为它的处键。Cascade属必设置为all,表示在保存、更新或删除User对象时,级联保存、更新或删除UserExt对象
五.配置多对多关联
在关联数据库设计时,多对多关联是一种很常见的表与表之间的关系,而这种关系常被分解为两个一对多的关联,使用一个关联表在这两个表之间“搭桥”
1.多对多关联属性介绍
?class:该对象指多对多关联的另一方的对象的类。
?column:该对象多对多关联的另一方的表的对应字段
2.数据库脚本scripts-many-to-many.sql
(3)编写Role.java
4.配置双向多对多关联
(1)编写User.java
(3)编写Role.java
本章完结,主要是展示了Hibernate的各配置文件的配置