hibernate级联操作及缓存

来源:互联网 发布:google play软件下载 编辑:程序博客网 时间:2024/05/18 02:00

 1.关联虽然会增加耦合度,但的确起到了简化程序的作用;
如果开始的数据结构基本完全确定,建议采用关联的方式;
如果程序可变性很强,就要慎重考虑了。
2.在使用多对一单向关联时,更新字段时最好应该从多的一端更新;其实是一对一关系,不会造成批量更新。
<many-to-one name="teacher" column="tid" class="calsspath" fetch="select" lazy="false" cascade="save-update"/>
3.在使用一对多单向关联时,应设inverse="true",即执行主表更新时不更新从表;
对于频繁更新的数据表inverse应设为true,在更新时应该尽量避免更新主表。
<set name="students" inverse="true" fetch="select" cascade="save-update" lazy="true">
      <key column="teacher_id"/>
      <one-to-many class="student classpath"/>
</set>
4.一对多双向关联时,设inverse="save-update"同时更新多表记录;
双向关联时,不能同时都指定cascade="save-update";
一对多双向关联其实就是2,3的结合。
5.多对多单向关联,需要第三个辅助表studentTeacher来实现:
<set name="teachers" table="studentsTeacher">
      <key column="student_id"/>
      <many-to-many column="teachar_id" class="teacher classpath"/>
</set>
6.多对多双向关联时,应该在inverse="false"一端保存数据才能完整保存;
多对多就是由两个一对多组成的(当然需要中间表的辅助)。
7.session一级缓存:由hibernate管理,存在于session生命周期;
sessionFactory二级缓存:可以人为配置,存在于sessionFactory生命周期;
8.二级缓存是一个插件,hibernate默认使用的是EhCache,Hibernate3.0已经包含此插件,将etc目录下的ehcache.xml拷贝到src   目录下配置即可生效。修改hibernate配置文件:
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

来自:http://hi.baidu.com/fly%5Fshark/blog/item/aef5d8089b6c96c73ac76343.html

原创粉丝点击