无题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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值