hibernate映射:Hibernate O/R映射 3大基本定则来源: 发布时间:星期六, 2009年2月21日 浏览:0次 评论:0
引言
在Java环境下有多种对象关系映射思路方法如实体Bean、OJB、JDO、JDBC等Hibernate是种新O/R映射工具它不仅提供了从Java类到数据表映射也提供了数据查询和恢复等机制Hibernate非常简单易学,目前国内有很多同行已经或正在用Hibernate开发实施项目;但Hibernate有很多规则不为人知或应用甚少本文目就是将这些规则归纳整理总结,希望对您开发和设计有益 首先声明,本文是Hibernate入门级文章,高手请不用往下看了 基本定则 定则:数据库配置文件名称可以不是Hibernate.properties或Hibernate.cfg.xml 由于Hibernate官方文档(本文指www.hibernate.org文档)影响,很多Hibernate开发者误以为系统定要有名称为Hibernate.properties或Hibernate.cfg.xml文件,而且定要放在es根目录下实际上,该文件只是般配置文件,名称可以自己取,文件位置可以自己定,而且在多数据库环境下,可以有多个配置文件,使得可以连接多个数据库只是您在创建会话工厂时需要特殊处理,代码举例如下: //配置文件名称 protected String CONFIG_FILE = "my_hibernate.config"; //配置文件目录,可以考虑在该目录下存放系统所有配置文件,此处使用虚拟机参数 String configPath = .getProperty("my.config"); //创建会话工厂 sessionFactory =( Configuration.configure( File(configPath+File.sep arator+CONFIG_FILE))) .buildSessionFactory; 定则 2:小型项目中,.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源代码分析可知,指定映射文件时,不能用绝对目录,只能用相对目录;而且,系统以es根目录为当前目录 定则 3:对象关系映射是以.hbm.xml文件为基准,而不是以PO文件为基准 该定律意思是:系统启动检查您对象关系映射是否正确时,是以.hbm.xml为基准来进行检查;对象文件property可以比映射文件property多,但不能少如果您有如下映射: =Apple-style-span style="WORD-SPACING: 0px; FONT: 12px/18px Verdana; TEXT-TRANSFORM: none; COLOR: rgb(51,51,51); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0">< name="com.hongsoft.test.User" table="res_user"> <id name="id" column="id" type="long" unsaved-value="any"> <generator ="assigned"> </generator> </id> <property name="name"/> <property name="loginName"/> <property name="passwd"/> </> 系统启动,检查数据库和其他配置正确后,将以该文件为基准,首先检查User对象中有无id属性和对应get/思路方法,如果没有则报错,如果有且正确则检查有无name属性和对应get/思路方法……,直到文件结束要注意是,如果属性为name,则get思路方法名称必须为getName,思路方法名称必须为Name,否则会报错 如果User对象除了有id,name,loginName, passwd 4个属性和对应思路方法,还有其它属性和思路方法,会报错吗?不会,对象关系映射是以.hbm.xml文件为基准,而不是以PO文件为基准您在项目中可以充分利用该特点,实现您自己比较特殊需求例如,您可以在User对象中加入updatedPasswd表示更改后口令,由此构造在表示层要使用FormBean和在业务层要使用ValueObject当然,这样做也有缺点,需要根据您实际情况而定 0
相关文章
读者评论发表评论 |