hibernate学习笔记(传智播客)(3)-2010-8-30

来源:互联网 发布:java技术应用 编辑:程序博客网 时间:2024/06/08 03:36

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.

原创粉丝点击