首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

无题一

2012-10-27 
无题11.当hibernate持久化一个临时对象时,在默认情况下,它不会自动持久化所关联的其它临时对象。如果希望希

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

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);        //1customer.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语句
由此可以证明inverse用来决定由哪段来维护双方关系

热点排行