日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析Hibernate集合映射inverse和cascade

Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要了解和測試Hibernate cascade和Hibernate inverse,希望對大家的學(xué)習(xí)有所幫助。

目前成都創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、安康網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

1: Hibernate inverse

在Hibernate annotation 中inverse 默認值是"true" 當(dāng)配置了mappedBy="…"時就相當(dāng)于inverse="false"了。

2: Hibernate cascade

CascadeType類中有這樣幾個常量,ALL、PERSIST、MERGE、REFRESH、REMOVE 。

讓代碼說話吧:

 
 
 
  1. @Entity 
  2. @Table(name = "Users") 
  3. public class User implements java.io.Serializable { 
  4.  
  5.  
  6.     private String id; 
  7.  
  8.     private Rose rose; 
  9.  
  10.     public User() { 
  11.     } 
  12.  
  13.     @Id 
  14.     @Column(name = "Id", unique = true, nullable = false, insertable = true, updatable = true, length = 5) 
  15.     public String getId() { 
  16.         return this.id; 
  17.     } 
  18.  
  19.     public void setId(String id) { 
  20.         this.id = id; 
  21.     } 
  22.  
  23.     @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY) 
  24.     @JoinColumn(name = "Roseid", unique = false, nullable = false, insertable = true, updatable = true) 
  25.     public Rose getRose() { 
  26.         return this.rose; 
  27.     } 
  28.  
  29.     public void setRose(Rose rose) { 
  30.         this.rose = rose; 
  31.     } 
  32.  
  33. @Entity 
  34. @Table(name = "Rose") 
  35. public class Rose implements java.io.Serializable { 
  36.  
  37.     private String id; 
  38.  
  39.     private Set users = new HashSet(0); 
  40.  
  41.     public Rose() { 
  42.     } 
  43.  
  44.     @Id 
  45.     @Column(name = "Id", unique = true, nullable = false, insertable = true, updatable = true, length = 3) 
  46.     public String getId() { 
  47.         return this.id; 
  48.     } 
  49.  
  50.     public void setId(String id) { 
  51.         this.id = id; 
  52.     } 
  53.  
  54.     @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER ) 
  55.     @JoinColumn(name="RoseId") 
  56.     public Set getUsers() { 
  57.         return this.users; 
  58.     } 
  59.  
  60.     public void setUsers(Set userses) { 
  61.         this.users = userses; 
  62.     } 
  63.  
  64.     public void addUser(User user) { 
  65.         user.setRose(this); 
  66.         users.add(user); 
  67.     } 

當(dāng)在user類中配置成cascade = { CascadeType.PERSIST, CascadeType.MERGE } 時,更新和刪除兩個級聯(lián)時:

 
 
 
  1. Hibernate: select user_.Id, user_.Enabledel as Enabledel1_, user_.Name as Name1_, user_.Password as Password1_, user_.Roseid as Roseid1_ from ERP.dbo.Users user_ where user_.Id=? 
  2. Hibernate: select rose_.Id, rose_.Enabledel as Enabledel0_, rose_.Name as Name0_, rose_.Parent as Parent0_ from ERP.dbo.Rose rose_ where rose_.Id=? 
  3. Hibernate: delete from ERP.dbo.Users where Id=? 

可以正常刪除!但是代碼要這樣寫:

 
 
 
  1. User user =new User("adm"); 
  2.          user.setRose(new Rose("adm"));    //這句不加就不能刪除,提示錯誤。除非數(shù)據(jù)庫不加級聯(lián)限制 
  3.         userDao.delete(user); 

當(dāng)在user類中配置成cascade = { CascadeType.ALL } or cascade={} 時,無法刪除。更新時也類似于這種情況,注意rose類中的addUser(User user)方法。再有fetch = FetchType.EAGER。在這里不是延時加載,如果設(shè)置成LAZY,在取得數(shù)據(jù)時怎么做好呢?看其他論壇的方法各有好處也有不好的地方,在找一個更方法。。。


當(dāng)前題目:淺析Hibernate集合映射inverse和cascade
本文來源:http://www.5511xx.com/article/djcjghp.html