无题1

1.当hibernate持久化一个[color=red]临时对象[/color]时,在默认情况下,它不会自动持久化所关联的其它[color=red]临时对象[/color]。如果希望希望当hibernate持久化一个临时对象时自动持久化所关联的对象,可以在配置文件中将该对象所要关联持久化的那个对象的cascade属性设为'save-update',cascade属性的默认值为‘none’。
[color=red]caseCade的属性为save-update表示保存或者更新当前对象时,会级联保存或更新与它相关联的对象[/color]

2.inverse属性用来决定由哪端来维护关系
例如:

public class Customer implements java.io.Serializable {
private Integer id;
private String name;
private Set orders=new HashSet();
//get/set.......
}
public class Order implements java.io.Serializable {
private Integer id;
private Customer customer;
private String orderNumber;
//get/set.......
}

public void associateCustomerAndOrder(){
//getSession1()........
Customer customer=new Customer("jack");
Order order=new Order();
order.setOrderNumber("jack_order001") ;
session1.save(customer);
session1.save(order);
int idofJack=customer.getId();
int idofjackOrder=order.getId();
//closeSession()1......

//getSession2()........
Customer customer=(Customer)session2.load(Customer.class,idofJack);
Order order=(Order)session2.load(Order.class,idofjackOrder);
order.setCustomer(customer); //1
customer.getOrders().add(order); //2
//closeSession()2......

}


<1.当customer配置文件中的set标签里面的属性inverse=false时,执行上面的代码将会出现两条用来更新customer与order关系的update语句
<2.当customer配置文件中的set标签里面的属性inverse=true时,注释掉1处的代码,再执行上面的代码将会出现一条用来更新customer与order关系的update语句
<3.当customer配置文件中的set标签里面的属性inverse=true时,注释掉2处的代码,再执行上面的代码将不会出现用来更新customer与order关系的update语句
[color=red]由此可以证明inverse用来决定由哪段来维护双方关系[/color]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章