1.几种常用集合:
bag :
他其实是没有顺序的List,因为List排序会消耗一定的性能
<bag name="secondType_Lists" cascade ="delete" lazy ="true" inverse="true">
<key column="firstType_id"/>
<one-to-many class="SecondType_List"/>
</bag>
map :
<map name="secondType_Maps" inverse="true">
<key column="firstType_id"/>
<!--设置键 -->
<map-key type="string" column="typename"/>
<one-to-many class="SecondType_Map"/>
</map>
list :
<list name="secondType_Lists" lazy ="true" inverse="true">
<key>
<column name="firstType_id"></column>
</key>
<!--这个属性是Hibernate使用的,实体类中并不存在这个属性 -->
<list-index column="order_id"></list-index>
<one-to-many class="SecondType_List"/>
</list>
set :
<set name="secondTypes" cascade ="delete" lazy ="true" inverse="true">
<key>
<column name="firstType_id"></column>
</key>
<one-to-many class="SecondType"/>
</set>
2.实体类中定义set集合,必须用Set接口,不能用HashSet,否则会报异常。
所有的集合,hibernate都重新做了处理,已经不是我们定义的set list等等,是为了实现懒加载。
3.一对多时候会有update语句,这是为什么?
一个很形象的说法:
因为,比如你把一方付给了多方,告诉hibernate这个关系,那么多方就要去维护这个关系,所以要update一下,不管这是不是有用。
4.多个保存的操作,在同一个事务下和不同的事务下,他们的执行时不同的。
太累了。。。。休息一会吧,给大脑放松一下。
5.inverse = true 放弃关系维护,那么就不会更新外键,就这么简单。
6.
不能再有序集合里使用inverse,比如说list,array,因为这样就会使顺序失效
多对多双方的inverse默认都为false,都要管理关系,它会往中间表里面插入记录,因此当inverse属性缺省的时候,双方的多对多关系只能保留一个,以免向中间表插入数据而报错。
7.