当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

Hibernate O/R映射三大基本定则[Java编程]

赞助商链接



  本文“Hibernate O/R映射三大基本定则[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1.引言

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

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

2.基本定则

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

由于Hibernate官方文档(本文指www.hibernate.org的文档)的影响,很多Hibernate开辟者误认为系统一定要闻名称为Hibernate.properties或Hibernate.cfg.xml的文件,并且一定要放在classes的根目录下.实际上,该文件只是普通的配置文件,名称可以自己取,文件位置可以自己定,并且在大都据库环境下,可以有多个配置文件,使得程序可以衔接多个数据库.只是您在成立会话工厂时需求特别处理,代码示比方下:

//配置文件名称
protected static String CONFIG_FILE = "my_hibernate.config";
//配置文件目录,可以考虑在该目录下存放系统全部配置文件,此处利用虚拟机参数
String configPath = System.getProperty("my.config");
//成立会话工厂
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="com/hongsoft/test/ persistence/Cat.hbm.xml"/>
<mapping resource="com/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="com.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.当然,这样做也有缺陷,需求按照您的实际情形而定.

3.总结

上面是作者对Hibernate映射的简单理解错误的知识点的归纳总结,但愿对您有帮忙.


  以上是“Hibernate O/R映射三大基本定则[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 在Hibernate里面动态切换SChema实现访谒差别的数据库的几种办法
  • Hibernate 3新增XML关系长期性介绍
  • Hibernate配置文件在单元测试中的操纵
  • 在Hibernate中动态切换Schema
  • hibernate annoation (八 关联映射)
  • hibernate annoation (九 cascading)
  • <b>hibernate annoation (十 映射查询)</b>
  • hibernate annoation(十一 缓存Ehcache 采纳annoation)
  • Hibernate:操作配置文件生成数据库
  • hibernate annoation (一 加载)
  • hibernate annoation (二 成立表)
  • <b>hibernate annoation (三 id生成器)</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .