成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Hibernate集合映射inverse和cascade

開發 后端
在Hibernate annotation 中inverse 默認值是"true" 當配置了mappedBy="…"時就相當于inverse="false"了。CascadeType類中有這樣幾個常量,ALL、PERSIST、MERGE、REFRESH、REMOVE 。

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

1: Hibernate inverse

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

2: Hibernate cascade

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

讓代碼說話吧:

  1. @Entity   
  2.  
  3. @Table(name = "Users")   
  4.  
  5. public class User implements java.io.Serializable {   
  6.  
  7.    
  8.  
  9.    
  10.  
  11.     private String id;   
  12.  
  13.    
  14.  
  15.     private Rose rose;   
  16.  
  17.    
  18.  
  19.     public User() {   
  20.  
  21.     }   
  22.  
  23.    
  24.  
  25.     @Id   
  26.  
  27.     @Column(name = "Id"unique = truenullable = falseinsertable = trueupdatable = truelength = 5)   
  28.  
  29.     public String getId() {   
  30.  
  31.         return this.id;   
  32.  
  33.     }   
  34.  
  35.    
  36.  
  37.     public void setId(String id) {   
  38.  
  39.         this.id = id;   
  40.  
  41.     }   
  42.  
  43.    
  44.  
  45.     @ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)   
  46.  
  47.     @JoinColumn(name = "Roseid"unique = falsenullable = falseinsertable = trueupdatable = true)   
  48.  
  49.     public Rose getRose() {   
  50.  
  51.         return this.rose;   
  52.  
  53.     }   
  54.  
  55.    
  56.  
  57.     public void setRose(Rose rose) {   
  58.  
  59.         this.rose = rose;   
  60.  
  61.     }   
  62.  
  63. }   
  64.  
  65.    
  66.  
  67. @Entity   
  68.  
  69. @Table(name = "Rose")   
  70.  
  71. public class Rose implements java.io.Serializable {   
  72.  
  73.    
  74.  
  75.     private String id;   
  76.  
  77.    
  78.  
  79.     private Set<User> users = new HashSet<User>(0);   
  80.  
  81.    
  82.  
  83.     public Rose() {   
  84.  
  85.     }   
  86.  
  87.    
  88.  
  89.     @Id   
  90.  
  91.     @Column(name = "Id"unique = truenullable = falseinsertable = trueupdatable = truelength = 3)   
  92.  
  93.     public String getId() {   
  94.  
  95.         return this.id;   
  96.  
  97.     }   
  98.  
  99.    
  100.  
  101.     public void setId(String id) {   
  102.  
  103.         this.id = id;   
  104.  
  105.     }   
  106.  
  107.    
  108.  
  109.     @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER )   
  110.  
  111.     @JoinColumn(name="RoseId")   
  112.  
  113.     public Set<User> getUsers() {   
  114.  
  115.         return this.users;   
  116.  
  117.     }   
  118.  
  119.    
  120.  
  121.     public void setUsers(Set<User> userses) {   
  122.  
  123.         this.users = userses;   
  124.  
  125.     }   
  126.  
  127.    
  128.  
  129.     public void addUser(User user) {   
  130.  
  131.         user.setRose(this);   
  132.  
  133.         users.add(user);   
  134.  
  135.     }   
  136.  

當在user類中配置成cascade = { CascadeType.PERSIST, CascadeType.MERGE } 時,更新和刪除兩個級聯時:

  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.  
  3. Hibernate: select rose_.Id, rose_.Enabledel as Enabledel0_, rose_.Name as Name0_, rose_.Parent as Parent0_ from ERP.dbo.Rose rose_ where rose_.Id=?   
  4.  
  5. Hibernate: delete from ERP.dbo.Users where Id=?   
  6.  

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

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

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

【編輯推薦】

  1. 生成Hibernate Mapping文件的分析
  2. 對Hibernate中get()與load()不同點分析
  3. Struts-Spring-Hibernate案例
  4. 簡述Hibernate配置連接池
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: blogjava
相關推薦

2009-09-22 09:40:03

cascade和invHibernate

2009-06-12 14:52:21

cascadeinverseHibernate

2011-04-07 11:06:18

Hibernate

2012-02-03 10:21:47

HibernateJava

2009-09-23 13:26:10

Hibernate對象

2012-02-03 11:17:33

HibernateJava

2009-09-25 09:46:02

Hibernate高級

2009-06-18 10:29:24

Hibernate I

2009-06-12 15:05:03

cascadeHibernate

2009-06-16 13:27:59

Hibernate x

2009-09-28 17:23:51

Hibernate E

2012-03-19 16:27:05

JavaHibernate

2009-07-15 17:52:10

2009-09-25 14:12:16

Hibernate繼承

2012-02-02 16:13:29

HibernateJava

2009-09-21 12:50:34

Hibernate架構

2009-09-21 18:13:11

Hibernate S

2009-09-23 10:19:08

Hibernate分頁

2009-09-23 17:28:55

Hibernate C

2009-09-21 17:23:49

Hibernate使用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 高清亚洲| 欧美日韩高清在线一区 | 欧美另类视频在线 | 亚洲国产黄 | 日本高清视频在线播放 | 中文字幕爱爱视频 | 精品久久国产 | 成人免费在线视频 | 亚洲一区亚洲二区 | 有码在线| 亚洲成人精品在线 | 美日韩免费| 精品国产精品国产偷麻豆 | 成人妇女免费播放久久久 | 综合精品久久久 | 日本一级淫片免费啪啪3 | 毛片99| 亚洲精品1区 | 亚洲精色 | 美女黄频 | 黄色网址免费在线观看 | 日韩中文字幕久久 | 久久精品成人一区 | 日韩欧美中文 | 日韩精品在线一区 | 欧美lesbianxxxxhd视频社区 | 亚洲一区不卡 | 欲色av| 久久精品福利视频 | 亚洲一级毛片 | 91九色porny首页最多播放 | 国产精品视频一二三区 | 天天操天天摸天天爽 | 久久毛片| 欧美成人精品一区二区男人看 | 亚洲一区欧美 | 亚洲综合中文字幕在线观看 | 久久久久久综合 | 黄色一级大片在线免费看产 | 日韩国产在线 | 青青草一区二区 |