zoukankan      html  css  js  c++  java
  • Hibernate逍遥游记-第13章 映射实体关联关系-006双向多对多(分解为一对多)

    1.

    2.

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping
     3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping >
     6 
     7   <class name="mypack.Monkey" table="MONKEYS" >
     8     <id name="id" type="long" column="ID">
     9       <generator class="increment"/>
    10     </id>
    11 
    12    <property name="name" column="NAME" type="string" />
    13     
    14    <set name="learnings" lazy="true" inverse="true" cascade="save-update">
    15         <key column="MONKEY_ID" />
    16         <one-to-many  class="mypack.Learning" />
    17    </set>
    18      
    19   </class>
    20 
    21 </hibernate-mapping>

    3.

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping
     3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping >
     6 
     7   <class name="mypack.Teacher" table="TEACHERS" >
     8     <id name="id" type="long" column="ID">
     9       <generator class="increment"/>
    10     </id>
    11 
    12     <property name="name" column="NAME" type="string" />
    13     
    14      <set name="learnings" lazy="true" inverse="true" cascade="save-update">
    15         <key column="TEACHER_ID" />
    16         <one-to-many  class="mypack.Learning" />
    17      </set>
    18  
    19   </class>
    20 </hibernate-mapping>

    4.

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping
     3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 <hibernate-mapping >
     6 
     7   <class name="mypack.Learning" table="LEARNING" >
     8     <id name="id" type="long" column="ID">
     9       <generator class="increment"/>
    10     </id>
    11 
    12     <property name="gongfu" column="GONGFU" type="string" />
    13     
    14     <many-to-one name="monkey" column="MONKEY_ID" class="mypack.Monkey" not-null="true" />
    15     <many-to-one name="teacher" column="TEACHER_ID" class="mypack.Teacher" not-null="true" />
    16 
    17  
    18   </class>
    19 </hibernate-mapping>

    5.

     1 package mypack;
     2 import java.util.Set;
     3 import java.util.HashSet;
     4 import java.util.Iterator;
     5 
     6 public class Monkey{
     7 
     8 
     9     private Long id;
    10     private String name;
    11     private Set learnings=new HashSet();
    12 
    13     public Monkey(String name, Set learnings) {
    14         this.name = name;
    15         this.learnings = learnings;
    16     }
    17 
    18     /** default constructor */
    19     public Monkey() {
    20     }
    21 
    22 
    23     public Long getId() {
    24         return this.id;
    25     }
    26 
    27     public void setId(Long id) {
    28         this.id = id;
    29     }
    30 
    31     public String getName() {
    32         return this.name;
    33     }
    34 
    35     public void setName(String name) {
    36         this.name = name;
    37     }
    38 
    39     public Set getLearnings() {
    40         return this.learnings;
    41     }
    42 
    43     public void setLearnings(Set learnings) {
    44         this.learnings = learnings;
    45     }
    46 
    47  }

    6.

     1 package mypack;
     2 
     3 import java.util.Set;
     4 import java.util.HashSet;
     5 
     6 public class Teacher{
     7     private Long id;
     8     private String name;
     9      private Set learnings=new HashSet();
    10 
    11     /** full constructor */
    12     public Teacher(String name,Set learnings ) {
    13         this.name = name;
    14         this.learnings=learnings;
    15     }
    16 
    17     /** default constructor */
    18     public Teacher() {
    19     }
    20 
    21     public String getName() {
    22         return this.name;
    23     }
    24 
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28 
    29     public Long getId() {
    30         return this.id;
    31     }
    32 
    33     public void setId(Long id) {
    34         this.id = id;
    35     }
    36 
    37     public Set getLearnings() {
    38         return this.learnings;
    39     }
    40 
    41     public void setLearnings(Set learnings) {
    42         this.learnings = learnings;
    43     }
    44 
    45 
    46 }

    7.

     1 package mypack;
     2 public class Learning{
     3     private Long id;
     4     private Teacher teacher;
     5     private Monkey monkey;
     6     private String gongfu;
     7     private int quantity;
     8 
     9     public Learning(Teacher teacher,Monkey monkey,String gongfu) {
    10         this.teacher= teacher;
    11         this.monkey = monkey;
    12         this.gongfu=gongfu;
    13     }
    14 
    15     /** default constructor */
    16     public Learning() {
    17     }
    18     
    19     public Long getId() {
    20         return this.id;
    21     }
    22 
    23     public void setId(Long id) {
    24         this.id = id;
    25     }
    26 
    27     public String getGongfu() {
    28         return this.gongfu;
    29     }
    30 
    31     public void setGongfu(String gongfu) {
    32         this.gongfu = gongfu;
    33     }
    34 
    35     public Monkey getMonkey() {
    36         return this.monkey;
    37     }
    38 
    39     public void setMonkey(Monkey monkey) {
    40         this.monkey = monkey;
    41     }
    42 
    43     public Teacher getTeacher() {
    44         return this.teacher;
    45     }
    46 
    47     public void setTeacher(Teacher teacher) {
    48         this.teacher = teacher;
    49     }
    50     
    51   }

    8.

      1 package mypack;
      2 
      3 import org.hibernate.*;
      4 import org.hibernate.cfg.Configuration;
      5 import java.util.*;
      6 
      7 public class BusinessService{
      8   public static SessionFactory sessionFactory;
      9   static{
     10      try{
     11        Configuration config = new Configuration().configure();
     12        sessionFactory = config.buildSessionFactory();
     13     }catch(RuntimeException e){e.printStackTrace();throw e;}
     14   }
     15 
     16 
     17   public void saveMonkey(Monkey monkey){
     18     Session session = sessionFactory.openSession();
     19     Transaction tx = null;
     20     try {
     21       tx = session.beginTransaction();
     22       session.save(monkey);
     23       tx.commit();
     24 
     25     }catch (RuntimeException e) {
     26       if (tx != null) {
     27         tx.rollback();
     28       }
     29       throw e;
     30     } finally {
     31       session.close();
     32     }
     33   }
     34 
     35   public void saveTeacher(Teacher teacher){
     36     Session session = sessionFactory.openSession();
     37     Transaction tx = null;
     38     try {
     39       tx = session.beginTransaction();
     40       session.save(teacher);
     41       tx.commit();
     42 
     43     }catch (RuntimeException e) {
     44       if (tx != null) {
     45         tx.rollback();
     46       }
     47       throw e;
     48     } finally {
     49       session.close();
     50     }
     51   }
     52  public Monkey loadMonkey(Long id){
     53     Session session = sessionFactory.openSession();
     54     Transaction tx = null;
     55     try {
     56       tx = session.beginTransaction();
     57       Monkey monkey=(Monkey)session.get(Monkey.class,id);
     58       Set learnings=monkey.getLearnings();
     59       Iterator it=learnings.iterator(); //初始化Learnings
     60       while(it.hasNext()){
     61         Learning learning=(Learning)it.next();
     62         Hibernate.initialize(learning.getTeacher()); //初始化Teacher
     63       }
     64       tx.commit();
     65       return monkey;
     66 
     67     }catch (RuntimeException e) {
     68       if (tx != null) {
     69         tx.rollback();
     70       }
     71       throw e;
     72     } finally {
     73       session.close();
     74     }
     75   }
     76 
     77   public void printMonkey(Monkey monkey){
     78     System.out.println("名字:"+monkey.getName());
     79  
     80     Set learnings=monkey.getLearnings();
     81     Iterator it=learnings.iterator();
     82     while(it.hasNext()){
     83       Learning learning=(Learning)it.next();
     84       System.out.println("-----------------------");
     85       System.out.println("老师:"+learning.getTeacher().getName());
     86       System.out.println("功夫:"+learning.getGongfu());
     87      }
     88 
     89   }
     90 
     91  public void test(){
     92 
     93       Teacher teacher1=new Teacher("二郎神",null);
     94       Teacher teacher2=new Teacher("红孩儿",null);
     95       saveTeacher(teacher1);
     96       saveTeacher(teacher2);
     97 
     98       Monkey monkey=new Monkey();
     99       monkey.setName("智多星");
    100       Learning learning1=new Learning(teacher1,monkey,"七十三变");
    101       Learning learning2=new Learning(teacher2,monkey,"三昧真火");
    102       
    103       monkey.getLearnings().add(learning1);
    104       monkey.getLearnings().add(learning2);
    105       saveMonkey(monkey);
    106 
    107       monkey=loadMonkey(monkey.getId());
    108       printMonkey(monkey);
    109 
    110   }
    111 
    112   public static void main(String args[]){
    113     new BusinessService().test();
    114     sessionFactory.close();
    115   }
    116 }

    9.

     1 drop database if exists SAMPLEDB;
     2 create database SAMPLEDB;
     3 use SAMPLEDB;
     4 
     5 create table MONKEYS(
     6    ID bigint not null,
     7    NAME varchar(15),
     8    primary key (ID)
     9 );
    10 
    11 create table TEACHERS(
    12   ID bigint not null,
    13   NAME varchar(15),
    14   primary key(ID)
    15 );
    16 
    17 create table LEARNING(
    18   ID bigint not null,
    19   MONKEY_ID bigint not null,
    20   TEACHER_ID bigint not null,
    21   GONGFU varchar(15),
    22   primary key(ID)
    23 );
    24 
    25 alter table LEARNING add index IDX_MONKEY(MONKEY_ID), 
    26 add constraint FK_MONKEY foreign key (MONKEY_ID) references MONKEYS(ID);
    27 
    28 alter table LEARNING add index IDX_TEACHER(TEACHER_ID), 
    29 add constraint FK_TEACHER foreign key (TEACHER_ID) references TEACHERS(ID);

    10.

  • 相关阅读:
    vim for python配置
    Python学习的一些好资料
    【Python开发实战】Python环境的配置
    【Python开发实战】Windows7+VirtualBox+Ubuntu环境配置
    linux下shapely的安装
    【python常用模块】os.path
    linux下gdal的python包的安装
    由二叉树的前序遍历和中序遍历,求其后序遍历
    ASCII码表
    C++标准库函数之排列函数
  • 原文地址:https://www.cnblogs.com/shamgod/p/5300036.html
Copyright © 2011-2022 走看看