国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
多對(duì)多關(guān)聯(lián)映射(單向)
多對(duì)多其實(shí)是個(gè)很復(fù)雜的關(guān)系,hibernate在進(jìn)行處理的時(shí)候借助中間表或者中間類(lèi)。中間表是在映射文件的關(guān)聯(lián)標(biāo)簽(比如集合標(biāo)簽<set>)中由table屬性指定的由hibernate自動(dòng)生成的表,它只有兩個(gè)字段,分別由<key>和<many-to-many>標(biāo)簽的table屬性指定,作為外鍵分別用來(lái)指向關(guān)聯(lián)雙方表的主鍵。中間類(lèi)就是把我們的中間表抽象生成一個(gè)實(shí)體類(lèi),在映射的時(shí)候分別和兩個(gè)關(guān)聯(lián)類(lèi)構(gòu)成一對(duì)多的關(guān)系,即演變成兩個(gè)一對(duì)多來(lái)處理。
        我習(xí)慣使用中間表的方式。
1.實(shí)體模型:
 
 
2.關(guān)系模型:
 
3.實(shí)體類(lèi):
  Role.java
public class Role {
  private Integer id;
  private String name;
  //一系列的setter.getter方法
  @Override
  public String toString() {
    return "Role:" + name;
  }
}
   Player.java
public class Player {
  private Integer id;
  private String name;
  private Set<Role> roles;
  //一系列的setter.getter方法
  @Override
  public String toString() {
    return "Player:" + name;
  }
}
 
4.映射文件:
  Role.hbm.xml
  <class name="com.sxt.hibernate.many2many.entity.Role" table="sxt_hibernate_role">
    <id name="id" length="4">
      <generator class="native"></generator>
    </id>
    <property name="name" length="10"></property>
  </class>
   Player.hbm.xml
  <class name="com.sxt.hibernate.many2many.entity.Player" table="sxt_hibernate_player">
    <id name="id" length="4">
      <generator class="native"></generator>
    </id>
    <property name="name" length="10"></property>
    <!--table="sxt_hibernate_user_role"含義,用來(lái)指定中間表    -->
    <set name="roles" table="sxt_hibernate_player_role" cascade="save-update">
      <!--<key column="user_id">含義,指定中間表中用來(lái)指向本表的外鍵    -->
      <key column="player_id"></key>
      <!-- column含義,用來(lái)指定中間表中用來(lái)指向另一端表的外鍵 -->
      <many-to-many class="com.sxt.hibernate.many2many.entity.Role" column="role_id"></many-to-many>
    </set>
  </class>
 
5.hibernate配置文件:
   參見(jiàn)上一篇。
 
6.測(cè)試方法:
  public static void main(String[] args) {
    Session session = HibernateUtils.getSession();
    Transaction t = session.beginTransaction();
    try {
      /**
        * 測(cè)試插入數(shù)據(jù)
        */

/*      Role role1=new Role();
      role1.setName("后衛(wèi)");
        
      Role role2=new Role();
      role2.setName("前鋒");
        
      Role role3=new Role();
      role3.setName("中鋒");
        
      Player player1=new Player();
      player1.setName("姚明");
      Set<Role> roles1=new HashSet<Role>();
      roles1.add(role3);
      player1.setRoles(roles1);
        
      Player player2=new Player();
      player2.setName("詹姆斯");
      Set<Role> roles2=new HashSet<Role>();
      roles2.add(role1);
      roles2.add(role2);
      roles2.add(role3);
      player2.setRoles(roles2);
      //能正確保存.每保存player后,都要級(jí)聯(lián)保存它的role,并且級(jí)聯(lián)插入中間表記錄.
      session.save(player1);
      session.save(player2);*/

        
      /**
        * 測(cè)試加載數(shù)據(jù)
        */

      Player player=(Player)session.load(Player.class, 1);
      System.out.println(player);
      for(Iterator<Role> iterator=player.getRoles().iterator();iterator.hasNext();){
        System.out.println(iterator.next());
      }
      t.commit();
    } catch (HibernateException e) {
      e.printStackTrace();
      t.rollback();
    } finally {
      HibernateUtils.closeSession(session);
    }
  }
}
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Eclipse快速上手Hibernate--7.關(guān)聯(lián)映射(一對(duì)多)(2)
hibernate之臟數(shù)據(jù)檢查
十五道Hibernate面試題及答案
Hibernate Clear 與 Flush 方法
Hibernate的命名查詢(xún)(NamedQuery)
寶寶 Hibernate學(xué)習(xí)總結(jié)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服