知识大全 Hibernate O/R映射三大基本定则

Posted 文件

篇首语:一等二靠三落空,一想二干三成功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Hibernate O/R映射三大基本定则相关的知识,希望对你有一定的参考价值。

Hibernate O/R映射三大基本定则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   引言

  在Java环境下 有多种对象关系映射方法 如实体Bean OJB JDO JDBC等 Hibernate是一种新的O/R映射工具 它不仅提供了从Java类到数据表的映射 也提供了数据查询和恢复等机制 Hibernate非常简单易学 目前国内有很多同行已经或正在用Hibernate开发实施项目 但Hibernate有很多规则不为人知或应用甚少 本文的目的就是将这些规则归纳总结 希望对您的开发和设计有益

  首先声明 本文是Hibernate入门级文章 高手请不用往下看了

   基本定则

  定则一 数据库配置文件名称可以不是Hibernate properties或Hibernate cfg xml

  由于Hibernate官方文档(本文指的文档)的影响 很多Hibernate开发者误以为系统一定要有名称为Hibernate properties或Hibernate cfg xml的文件 而且一定要放在classes的根目录下 实际上 该文件只是一般的配置文件 名称可以自己取 文件位置可以自己定 而且在多数据库环境下 可以有多个配置文件 使得程序可以连接多个数据库 只是您在创建会话工厂时需要特殊处理 代码示例如下

  //配置文件名称

  protected static String CONFIG_FILE = nfig

  //配置文件目录 可以考虑在该目录下存放系统所有配置文件 此处使用虚拟机参数

  String configPath = System getProperty( nfig )

  //创建会话工厂

  sessionFactory =( new Configuration() configure(new File(configPath+File separator+CONFIG_FILE))) buildSessionFactory()

  定则二 小型项目中 hbm xml文件可以合并到一个文件中

  同样由于Hibernate官方文档的影响 很多Hibernate开发者误以为Hibernate的对象关系映射一定要一个表对应一个对象 并将映射文件和对象文件放在同一目录下 实际上 该模式是为规范性考虑而设计的 因为在多人参与的项目中 多人要维护同一文件容易产生冲突 当项目比较小时 配置文件的维护人员少 我们完全可以将 hbm xml文件合并到一个或者几个文件中 依据作者本人的项目设计开发经验 最好是项目中有几人同时从事O/R映射和持久工作 则设定几个 hbm xml文件 每人维护一个 当然 为了便于分类和管理 每人的工作应该按逻辑划分

  大型项目中的文件配置示例如下

  

  <hibernate configuration>

  <session factory>

  <!—映射文件分散 >

  <mapping resource= /hongsoft/test/ persistence/Cat hbm xml />

  <mapping resource= /hongsoft/test/ persistence/Animal hbm xml />

  </session factory>

  </hibernate configuration>

  小型项目中的文件配置示例如下

  

  <hibernate configuration>

  <session factory>

  <!—映射文件集中 >

  <mapping resource= res_hibernate_map xml />

  </session factory>

  </hibernate configuration>

  要注意的是 从对Hibernate源代码的分析可知 指定映射文件时 不能用绝对目录 只能用相对目录 而且 系统以classes根目录为当前目录

  定则三 对象关系映射是以 hbm xml文件为基准的 而不是以PO文件为基准

  该定律的意思是 系统启动检查您的对象关系映射是否正确时 是以 hbm xml为基准来进行检查的 对象文件的property可以比映射文件的property多 但不能少 如果您有如下的映射

  

  <class name= hongsoft test User table= res_user >

  <id name= id column= id type= long unsaved value= any >

  <generator class= assigned >

  </generator>

  </id>

  <property name= name />

  <property name= loginName />

  <property name= passwd />

  </class>

  系统启动 检查数据库和其他配置正确后 将以该文件为基准 首先检查User对象中有无id属性和对应的get/set方法 如果没有则报错 如果有且正确则检查有无name属性和对应的get/set方法…… 直到文件结束 要注意的是 如果属性为name 则get方法名称必须为getName() set方法名称必须为setName() 否则会报错

  如果User对象除了有id name loginName passwd四个属性和对应的方法 还有其它的属性和方法 会报错吗?不会 因为对象关系映射是以 hbm xml文件为基准的 而不是以PO文件为基准 您在项目中可以充分利用该特点 实现您自己的比较特殊的需求 例如 您可以在User对象中加入updatedPasswd表示更改后的口令 由此构造在表示层要使用的FormBean和在业务层要使用的ValueObject 当然 这样做也有缺点 需要根据您的实际情况而定

   总结

cha138/Article/program/Java/ky/201311/28062

相关参考

知识大全 Hibernate O/R映射三大基本定则[1]

HibernateO/R映射三大基本定则[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引

知识大全 O/R MAPPING(Hibernate)方法小结

O/RMAPPING(Hibernate)方法小结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Hibernate的基本标签和映射

Hibernate的基本标签和映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  hiberna

知识大全 hibernate关系映射

  一对象关系映射基础  对象间的基本关系  首先我简要阐明一下对象之间的基本关系在这以后UML的课程中也会深入的学习对象具有的四种基本关系  关联关系关联关系在设计模式中是被提倡优先使用于继承关系的

知识大全 Hibernate如何映射枚举类型

Hibernate如何映射枚举类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问题  Jav

知识大全 Hibernate各种映射关系总结

Hibernate各种映射关系总结  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多对一  第一

知识大全 Hibernate复合主键映射

Hibernate复合主键映射  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 精通Hibernate之映射继承关系(二)

精通Hibernate之映射继承关系(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  把每个

知识大全 Spring动态加载Hibernate映射文件

Spring动态加载Hibernate映射文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 精通Hibernate之映射继承关系(一)

精通Hibernate之映射继承关系(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在域模