首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate 累积

2012-09-22 
Hibernate 积累?解决实体类或属性名与数据库关键字冲突除了在hbm.xml中加column属性或table属性来改变列名

Hibernate 积累

Hibernate 累积?解决实体类或属性名与数据库关键字冲突

除了在hbm.xml中加column属性或table属性来改变列名或数据库表名字外,如果移植数据后不准改数据库属性名的话还可以在column属性或table属性加上反引号把它当做字符串来处理。

?

Hibernate 累积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语句的问题了,就会产生插入异常。
Hibernate 累积generator子标签常用class属性increment Hibernate内部自己做累加,而不是数据库中做累加。所以集群下不要使用。indentity 数据库标示符自增长squence Oracle常用hilo 高低位 数据库保存高位字段,Hibernate累加地位字段,新插入数据由这两个字段组成,不会重复。uuid 生成主键不用访问数据库,Hibernate生成,插入效率很高,可移植性好,而像indentity,squence插入时都要先访问数据库。主键string类型,查询时候效率不高。native 根据数据库底层能力选择identity squence hiloassigned 手工分配主键foreigh 外键引用作为主键
Hibernate 累积N+1次查询和懒加载?? ? ? ?1.用Query.iterator可能会有N+1次查询。2.懒加载时获取关联对象。3.如果打开对查询的缓存即使用list也可能有N+1次查询。

热点排行