Hibernate学习资料(2009-2-26)

上传人:206****923 文档编号:90316506 上传时间:2019-06-11 格式:DOC 页数:35 大小:398.51KB
返回 下载 相关 举报
Hibernate学习资料(2009-2-26)_第1页
第1页 / 共35页
Hibernate学习资料(2009-2-26)_第2页
第2页 / 共35页
Hibernate学习资料(2009-2-26)_第3页
第3页 / 共35页
Hibernate学习资料(2009-2-26)_第4页
第4页 / 共35页
Hibernate学习资料(2009-2-26)_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《Hibernate学习资料(2009-2-26)》由会员分享,可在线阅读,更多相关《Hibernate学习资料(2009-2-26)(35页珍藏版)》请在金锄头文库上搜索。

1、 Hibernate 初识构建Hibernate 基础代码 1 POJOPOJO 在Hibernate 语义中理解为数据库表所对应的Domain Object。这里的POJO就是所谓的“Plain Ordinary Java Object”,字面上来讲就是无格式普通Java 对象,简单的可以理解为一个不包含逻辑代码的值对象(Value Object 简称VO)。2 Hibernate 映射文件Hibernate 从本质上来讲是一种“对象关系型数据映射”(Object RelationalMapping 简称ORM)。前面的POJO在这里体现的就是ORM中Object层的语义,而映射(Mappi

2、ng)文件则是将对象(Object)与关系型数据(Relational)相关联的纽带,在Hibernate中,映射文件通常以“.hbm.xml”作为后缀。由数据库产生基础代码通过Hibernate官方提供的MiddleGen for Hibernate 和Hibernate_Extension工具包,我们可以很方便的根据现有数据库,导出数据库表结构,生成ORM和POJO1) 首先,将Middlegen-Hibernate软件包解压缩( 如解压缩到C:Middlegen )。2) 配置目标数据库参数进入MiddleGen 目录下的configdatabase 子目录,根据我们实际采用的数据库打开

3、对应的配置文件。如这里我们用的是mysql数据库,对应的就是mysql.xml文件。修改MiddleGen 根目录下的build.xml 文件,此文件是Middlegen-Hibernate 的Ant构建配置。Middlegen-Hibernate将根据build.xml文件中的具体参数生成数据库表映射文件。可配置的项目包括:a) 目标数据库配置文件地址查找关键字 ”!ENTITY”,得到:!DOCTYPE project 默认情况下,MiddleGen 采用的是hsqldb.xml,将其修改为我们所用的数据库配置文件(mysql.xml):!DOCTYPE project b) Applic

4、ation name查找:“aireline”是MiddleGen原始配置中默认的 Application Name,将其修改为我们所希望的名称,如“HibernateSample”:c) 输出目录查找关键字“name=build.gen-src.dir”,得到:修改value=$build.dir/gen-src使其指向我们所期望的输出目录,这里我们修改为:d) 对应代码的Package name查找关键字“destination”,得到:可以看到,hibernate 节点package 属性的默认设置实际上是由前面的Application Name ($name)和“.hibernate”

5、组合而成,根据我们的需要,将其改为:这里还有一个属性genXDocletTags,如果设置为true,则生成的代码将包含xdoclet tag,这为以后在开发过程中借助xdoclet进行映射调整提供了帮助。关于Hibernate的xdoclet使用,请参见“高级特性”中的相关内容。注意,如果使用的数据库为SQLServer,需要将build.xml 中如下部分(下划线部分)删除,否则Middlegen会报出找不到表的错误。在MiddleGen 根目录下运行ant,就将出现MiddleGen的界面:1 Domain Class Name对应POJO 的类名2 Key Generator主键产生器

6、可选项说明:1) Assigned主键由外部程序负责生成,无需Hibernate参与。2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。4) increment主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主

7、键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。5) identity采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制6) sequence采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。7) native由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。8) uuid.hex由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。9

8、) uuid.string与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)10) foreign使用外部表的字段作为主键。3 如果需要采用定制的主键产生算法,则在此处配置主键生成器,主键生成器必须实现net.sf.hibernate.id.IdentifierGenerator 接口。4 Schema Name数据库Schema Name。5 Persister自定义持久类实现类类名。如果系统中还需要Hibernate 之外的持久层实现机制,如通过存储过程得到目标数据集,甚至从LDAP中获取数据来填充我们的POJO。6 Ena

9、ble proxies是否使用代理(用于延迟加载Lazy Loading)。7 Dynamic Update如果选定,则生成Update SQL 时不包含未发生变动的字段属性,这样可以在一定程度上提升SQL执行效能。8 Mutable类是否可变,默认为选定状态(可变)。如果不希望应用程序对此类对应的数据记录进行修改(如对于数据库视图),则可将取消其选定状态,之后对此类的Delete和Update操作都将失效。9 Implement the Lifecyle interface是否实现Lifecyle接口。Lifecyle接口提供了数据固化过程中的控制机制,通过实现Lifecyle接口,我们可以在数据库操作中加入回调(Call Back)机制,如在数据库操作之前,之后触发指定操作。10 Implement the Validatable interface是否实现Validatable接口。通过实现Validatable接口,我们可以在数据被固化到数据库表之前对其合法性进行验证。值得注意的是,通过实现Lifecyle接口,我们同样可以在数据操作之前验证数据合法性,不同的是,Validatable 接口中定义的validate 方法可能会被调用多次,因此设计中应避免在Validatable 接口的validate 方法实现中加入业务逻辑的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号