大型项目中的文件配置示例如下:
<hibernateconfiguration>
<sessionfactory>
<!—映射文件分散 >
<mapping resource=com/hongsoft/test/ persistence/Cathbmxml/>
<mapping resource=com/hongsoft/test/ persistence/Animalhbmxml/>
</sessionfactory>
</hibernateconfiguration>
小型项目中的文件配置示例如下:
<hibernateconfiguration>
<sessionfactory>
<!—映射文件集中 >
<mapping resource=res_hibernate_mapxml/>
</sessionfactory>
</hibernateconfiguration>
要注意的是 从对Hibernate源代码的分析可知指定映射文件时不能用绝对目录只能用相对目录;而且系统以classes根目录为当前目录
定则三:对象关系映射是以hbmxml文件为基准的而不是以PO文件为基准
该定律的意思是:系统启动检查您的对象关系映射是否正确时是以hbmxml为基准来进行检查的;对象文件的property可以比映射文件的property多但不能少如果您有如下的映射:
<class name=comhongsofttestUser table=res_user>
<id name=id column=id type=long unsavedvalue=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对象除了有idnameloginName passwd四个属性和对应的方法还有其它的属性和方法会报错吗?不会因为对象关系映射是以hbmxml文件为基准的而不是以PO文件为基准您在项目中可以充分利用该特点实现您自己的比较特殊的需求例如您可以在User对象中加入updatedPasswd表示更改后的口令由此构造在表示层要使用的FormBean和在业务层要使用的ValueObject当然这样做也有缺点需要根据您的实际情况而定
总结
上面是作者对Hibernate映射的容易理解错误的知识点的归纳总结希望对您有帮助
[] []