标签:hibernate
应用程序与hibernate是通过持久化类通信:
hibernate需要访问的属性一定要在*.hbm.xml中定义,不一定在持久化类中定义,但持久化类一定要提供该属性的set和get方法。
如果持久化类里有一个属性,数据库中表没有对应字段,可以用*.hbm.xml中的formula属性做对应关系,例如下图,持久化类中有totalPrice属性,数据库表里没有
4.
5. new出来的对象在堆中,为临时态,被save后,该对象其实是加入了一个session中的map,key为这个对象的OID,其实就是多了一个对它的引用,并且在flush时会将该对象对应的条目保存到数据库,此时为持久态,当session不存在,session对
该对象的引用没了,而数据库中还有一条记录与之对应,此时该对象处于游离态。
6.many-to-one
7. One-to-Many
8.cascade
9.inverse
当两个表建立关系时,也就是调用多方的(many)set方法和一方的(one)add方法时,如果双方都配置inverse为false,则多方会生成两条重复的sql语句去update多方的对应条目,
结果是访问数据库低效,所以一般在one方设置inverse为true,此时意思是由many方法来控制两个表的关联关系,也就是当many方调用set方法时,才生成一条sql语句去update多方的对应条目,
从而建立关系,而如果one方调用add方法时,不会生成sql语句去update多方的对应条目,也就不会建立起联系。
10.触发器会引起数据库与session缓存中的数据不一致的问题
11.组成关系映射,就是类内部引用了其他类,这个其他类也可以做映射,需要在*.hbm.xml中使用component元素
12.检索策略,分为类检索和关联检索(与那个类关联的类,或者说与那个类对应的条目的关联条目的检索)
标签:hibernate
原文地址:http://blog.51cto.com/2839840/2056887