Hibernate 积累
?解决实体类或属性名与数据库关键字冲突
除了在hbm.xml中加column属性或table属性来改变列名或数据库表名字外,如果移植数据后不准改数据库属性名的话还可以在column属性或table属性加上反引号把它当做字符串来处理。
?
cascade和inverse
Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:none,all,save-update ,delete, lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。注: 配置成one-to-one的对象不维护关联关系上次提过的inverse,在list,array等有序的容器里面是不能使用的,很简单,都放弃多关系的维护了,还会在乎元素的顺序么。还有一点,在多的一端,不允许放弃对关系的维护。多对多关系的维护,双方处于平等地位,那么谁来维护都是可以的,注意多对多关系的维护是在中间表插入一条新的记录,如果双方都维护,那么就不是重复update语句的问题了,就会产生插入异常。