和風細雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

          類集合包含的Hibernate映射

          類集合包含意味著一個類中的成員變量是另一個類的集合,比如說公司類Company包含成員類Member的集合.

          類圖如下:


          它們分別對應數據庫中的Companys表和Members表,它們的ER圖如下:

          以下代碼演示了如何將類與數據庫映射起來:

          Company類代碼:
          package com.sitinspring.companymember;

          import java.util.HashSet;
          import java.util.Set;

          public class Company{
              
          private long id;
              
          private String name;
              
          private Set<Member> members = new HashSet<Member>();    
              
              
          public Company(){
              }

              
              
          public Company(long id,String name){
                  
          this.id=id;
                  
          this.name=name;
              }

              
              
          public void add(Member member){
                  member.setCid(id);
                  members.add(member);
              }

              
              
          public String toString(){
                  String retval
          ="Company id="+id+" name="+name;
                  
                  
          for(Member member:members){
                      retval
          +="\n"+member;
                  }

                  
                  
          return retval;
              }

              
              
          public long getId() {
                  
          return id;
              }

              
          public void setId(long id) {
                  
          this.id = id;
              }

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }


              
          public Set<Member> getMembers() {
                  
          return members;
              }


              
          public void setMembers(Set<Member> members) {
                  
          this.members = members;
              }

          }

          Company.hbm.xml:
          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC 
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
          <hibernate-mapping package="org.hibernate.auction">
              
          <class name="com.sitinspring.companymember.Company" table="COMPANYS">
                  
          <id name="id" column="ID"/>
                  
          <property name="name" column="NAME" />
                  
                  
          <set name="members" inverse="true" cascade="all" lazy="false">
                      
          <key column="CID" />
                      
          <one-to-many class="com.sitinspring.companymember.Member" />
                  
          </set>
              
          </class>
          </hibernate-mapping>

          Member類代碼:
          package com.sitinspring.companymember;

          public class Member {
              
          private long id;

              
          private long cid;

              
          private String name;

              
          public Member() {
              }

              
              
          public Member(long id, String name) {
                  
          this.id = id;
                  
          this.name = name;
              }

              
              
          public String toString(){
                  
          return "Member id="+id+" cid="+cid+" name="+name;
              }


              
          public long getId() {
                  
          return id;
              }


              
          public void setId(long id) {
                  
          this.id = id;
              }


              
          public String getName() {
                  
          return name;
              }


              
          public void setName(String name) {
                  
          this.name = name;
              }


              
          public long getCid() {
                  
          return cid;
              }


              
          public void setCid(long cid) {
                  
          this.cid = cid;
              }

          }

          Member.hbm.xml:
          <?xml version="1.0"?>
          <!DOCTYPE hibernate-mapping PUBLIC 
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
          <hibernate-mapping package="org.hibernate.auction">
              
          <class name="com.sitinspring.companymember.Member" table="MEMBERS">
                  
          <id name="id" column="ID"/>
                  
          <property name="cid" column="CID" />
                  
          <property name="name" column="NAME" />
              
          </class>
          </hibernate-mapping>

          測試代碼如下:
          package com.sitinspring.companymember;

          import org.hibernate.Session;

          import com.sitinspring.util.HibernateUtil;

          public class Main {
              
          public static void main(String[] args) {
                  Session session 
          = HibernateUtil.getSessionFactory().getCurrentSession();
                  session.beginTransaction();

                  
          // --插入代碼開始
                  Company citi = new Company(1"Citi");
                  citi.add(
          new Member(10"Andy"));
                  citi.add(
          new Member(11"Bill"));
                  session.save(citi);

                  Company google 
          = new Company(2"google");
                  google.add(
          new Member(20"Cindy"));
                  google.add(
          new Member(21"Dennis"));
                  session.save(google);

                  session.flush();

                  Company company 
          = (Company) session.load(Company.class, citi.getId());
                  company 
          = (Company) session.load(Company.class, google.getId());
                  
          // --插入代碼結束

                  
          // --讀取代碼開始
                  long i = 1;

                  Company companyLoaded 
          = (Company) session.load(Company.class, i);
                  System.out.println(companyLoaded);
                  i 
          = 2;
                  companyLoaded 
          = (Company) session.load(Company.class, i);
                  System.out.println(companyLoaded);
                  
          // --讀取代碼開始

                  session.getTransaction().commit();
                  HibernateUtil.getSessionFactory().close();
              }

          }

          測試結果:




          代碼下載:
          http://www.aygfsteel.com/Files/sitinspring/HibernateClasses20071109085612.rar

          posted on 2008-02-22 11:24 和風細雨 閱讀(281) 評論(0)  編輯  收藏 所屬分類: Hibernate

          主站蜘蛛池模板: 甘谷县| 尉氏县| 黎平县| 清新县| 罗平县| 洛浦县| 庆云县| 正镶白旗| 江北区| 清丰县| 长阳| 西乌珠穆沁旗| 武义县| 绥江县| 华池县| 城市| 鞍山市| 漠河县| 迁安市| 乐平市| 长乐市| 三明市| 嵊州市| 洛阳市| 东海县| 宁城县| 博野县| 玛曲县| 衡南县| 来安县| 玉树县| 北碚区| 青田县| 比如县| 福建省| 平凉市| 汽车| 蚌埠市| 南岸区| 察雅县| 阜城县|