日期:2014-05-16  浏览次数:20543 次

hibernate中的inverse和cascade

Hibernate集合映射中,经常会使用到"inverse"和"cascade"这两个属性。对于我这样,Hibernate接触不深和语文水平够烂的种种因素,发现这两个属性实在是难以理解,无奈只好将这个两个属性解释工作交给了Google和Baidu,查看了许多牛人的解释,加上自己在Eclipse上的调试,对"inverse"和"cascade"这两个属性有了一定的见解。

?


"inverse"属性探究?

  "inverse"-直译过来就是"反转,使颠倒"的意思,书面化的解释为"是否将关系维护的权力交给对方"(这个解释真够蛋疼的-_-!!,就是理解不了)。 Hibernate中的"inverse"属性只有两个值"true"和"false"。"true"表示将关系维护的权力交给对方,"false"表示不交出维护权力(默认值)。

  例如有两张表,customer和orders,他们的关系是一对多,customer是一方,orders为多方。

drop table if exists customer; drop table if exists orders; create table customer ( id varchar(255) not null, username varchar(255), password varchar(255), age integer, register_time datetime, primary key (id) ); create table orders ( id varchar(255) not null, orderNumber varchar(255), balance integer, customer_id varchar(255), primary key (id) );

复制代码

  两表对应的hbm文件,对应的POJO类:

/*customer表对应的POJO类*/ public class Customer { private String id; private String username; private String password; private Timestamp registerTime; private int age; private Set<Order> orders = new HashSet<Order>(); public Customer() { } /*get and set method*/ } /*orders表对应的POJO类*/ public class Order { private String id; private String orderNumber; private int balance; private Customer customer; public Order() { } /* get and set method*/ }

复制代码

?

<!--Customer类的hbm文件--> <hibernate-mapping> <class name="com.suxiaolei.hibernate.pojos.Customer" table="customer"> <id name="id" type