1.

 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
15     <set name="learnings" lazy="true" table="LEARNING" >
16         <key column="MONKEY_ID" />
17         <composite-element class="mypack.Learning" >
18           <parent name="monkey" />
19           <many-to-one name="teacher" class="mypack.Teacher" column="TEACHER_ID" not-null="true"/>
20           <property name="gongfu" column="GONGFU" type="string" not-null="true" />
21          </composite-element>
22     </set>
23
24   </class>
25
26 </hibernate-mapping>

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.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" table="LEARNING" >
15         <key column="TEACHER_ID" />
16         <composite-element class="mypack.Learning" >
17           <parent name="teacher" />
18           <many-to-one name="monkey" class="mypack.Monkey" column="MONKEY_ID" not-null="true"/>
19           <property name="gongfu" column="GONGFU" type="string" not-null="true" />
20          </composite-element>
21     </set>
22
23   </class>
24 </hibernate-mapping>

3.

 1 package mypack;
 2
 3 import java.util.Set;
 4 import java.util.HashSet;
 5
 6 public class Monkey {
 7     private Long id;
 8     private String name;
 9      private Set learnings=new HashSet();
10
11     public Monkey(String name, Set learnings) {
12         this.name = name;
13         this.learnings = learnings;
14     }
15
16     /** default constructor */
17     public Monkey() {
18     }
19
20
21     public Long getId() {
22         return this.id;
23     }
24
25     public void setId(Long id) {
26         this.id = id;
27     }
28
29     public String getName() {
30         return this.name;
31     }
32
33     public void setName(String name) {
34         this.name = name;
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  }

4.

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

5.

 1 package mypack;
 2
 3 public class Learning{
 4
 5     private Teacher teacher;
 6     private Monkey monkey;
 7     private String gongfu;
 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 String getGongfu() {
20         return this.gongfu;
21     }
22
23     public void setGongfu(String gongfu) {
24         this.gongfu = gongfu;
25     }
26
27     public Monkey getMonkey() {
28         return this.monkey;
29     }
30
31     public void setMonkey(Monkey monkey) {
32         this.monkey = monkey;
33     }
34
35     public Teacher getTeacher() {
36         return this.teacher;
37     }
38
39     public void setTeacher(Teacher teacher) {
40         this.teacher = teacher;
41     }
42
43   }

6.

  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
 59       Set learnings=monkey.getLearnings();
 60       Iterator it=learnings.iterator(); //初始化Learnings
 61       while(it.hasNext()){
 62         Learning learning=(Learning)it.next();
 63         Hibernate.initialize(learning.getTeacher()); //初始化Teacher
 64       }
 65       tx.commit();
 66
 67       return monkey;
 68
 69     }catch (RuntimeException e) {
 70       if (tx != null) {
 71         tx.rollback();
 72       }
 73       throw e;
 74     } finally {
 75       session.close();
 76     }
 77   }
 78
 79   public void printMonkey(Monkey monkey){
 80     System.out.println("名字:"+monkey.getName());
 81
 82     Set learnings=monkey.getLearnings();
 83     Iterator it=learnings.iterator();
 84     while(it.hasNext()){
 85       Learning learning=(Learning)it.next();
 86       System.out.println("-----------------------");
 87       System.out.println("老师:"+learning.getTeacher().getName());
 88       System.out.println("功夫:"+learning.getGongfu());
 89     }
 90
 91   }
 92
 93   public void test(){
 94
 95       Teacher teacher1=new Teacher("二郎神",null);
 96       Teacher teacher2=new Teacher("红孩儿",null);
 97       saveTeacher(teacher1);
 98       saveTeacher(teacher2);
 99
100       Monkey monkey=new Monkey();
101       monkey.setName("智多星");
102       Learning learning1=new Learning(teacher1,monkey,"七十三变");
103       Learning learning2=new Learning(teacher2,monkey,"三昧真火");
104
105       monkey.getLearnings().add(learning1);
106       monkey.getLearnings().add(learning2);
107       saveMonkey(monkey);
108
109       monkey=loadMonkey(monkey.getId());
110       printMonkey(monkey);
111
112   }
113
114   public static void main(String args[]){
115     new BusinessService().test();
116     sessionFactory.close();
117   }
118 }

7.

 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   MONKEY_ID bigint not null,
19   TEACHER_ID bigint not null,
20   GONGFU varchar(15),
21   primary key(MONKEY_ID,TEACHER_ID,GONGFU)
22 );
23
24 alter table LEARNING add index IDX_MONKEY(MONKEY_ID),
25 add constraint FK_MONKEY foreign key (MONKEY_ID) references MONKEYS(ID);
26
27 alter table LEARNING add index IDX_TEACHER(TEACHER_ID),
28 add constraint FK_TEACHER foreign key (TEACHER_ID) references TEACHERS(ID);

8.

转载于:https://www.cnblogs.com/shamgod/p/5299954.html

Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\composite-element\)...相关推荐

  1. Hibernate逍遥游记-第2章-使用hibernate.properties

    1. 1 package mypack; 2 3 import org.hibernate.*; 4 import org.hibernate.cfg.Configuration; 5 import ...

  2. java逍遥游记 下载_Hibernate逍遥游记 孙卫琴著 PDF下载

    <Java开发专家•Hibernate逍遥游记(附CD-ROM光盘1张)>Hibernate是非常流行的对象一关系映射工具.<Java开发专家•Hibernate逍遥游记(附CD-R ...

  3. 《Java逍遥游记》

    <Java逍遥游记>精彩章节下载 序 转眼之间,我在Java领域从事了八年多的创作了.在这八年中,我在Java的各个领域里遨游驰骋,既要探索各种技术的宏观架构和运用技巧,又要细细品味每种技 ...

  4. Hibernate 实体关联关系映射----总结

    http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...

  5. python映射实体类_【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)...

    紧接上一篇,这里Himi直接copy上一篇创建的HelloHibernate项目,然后改名为:HelloAnnonation,Ok: OK,准备工作: 首先第一步,继续再我们自定义的user libr ...

  6. Hibernate实体关联关系映射

    一.什么是Hibernate中的关联映射? 简单来说Hibernate是ORM映射的持久层框架,全称是(Object Relational Mapping),即对象关系映射. 它将数据库中的表映射成对 ...

  7. 第13章 Kotlin 集成 SpringBoot 服务端开发(1)

    第13章 Kotlin 集成 SpringBoot 服务端开发 本章介绍Kotlin服务端开发的相关内容.首先,我们简单介绍一下Spring Boot服务端开发框架,快速给出一个 Restful He ...

  8. Spring - Java/J2EE Application Framework 应用框架 第 13 章 集成表现层

    第 13 章 集成表现层 13.1. 简介 Spring之所以出色的一个原因就是将表现层从MVC的框架中分离出来.例如,通过配置就可以让Velocity或者XSLT来代替已经存在的JSP页面.本章介绍 ...

  9. 【CIPS 2016】(1-3章)词法、句法、语义、语篇分析(研究进展、现状趋势)

    CIPS 2016 笔记整理 <中文信息处理发展报告(2016)>是中国中文信息学会召集专家对本领域学科方 向和前沿技术的一次梳理,官方定位是深度科普,旨在向政府.企业.媒体等对中文 信息 ...

  10. servlet3.1规范翻译:第13章 安全

    servlet3.1规范翻译:第13章 安全 2013-02-21 16:55 1563人阅读 评论(0) 收藏 举报  分类: servlet3.1规范翻译(17)  目录(?)[+] 第13章 安 ...

最新文章

  1. mysql 压力测试脚本
  2. Oracle报错TNS-12532: TNS:invalid argument
  3. 同一局域网内_Pycharm访问服务器
  4. redis数据持久化到mysql_Redis【数据持久化篇】
  5. [最新下载] 【火车票订票外挂】Go-Home–12306.cn 网上火车票自动订票程序
  6. 如何在 C# 中使用 Dapper ORM
  7. AspNetCore微服务下的网关-Kong(一)
  8. python flag 参数_flag_flagpython_js开关flag - 云+社区 - 腾讯云
  9. 将VS Code用于C#脚本
  10. java设计模式案例详解:观察者模式
  11. 使用xml让你的Activity无标题方法
  12. IDM6.31注册机
  13. html日期框样式设置
  14. 用计算机弹逆战的简谱,张杰逆战歌曲钢琴简谱
  15. 水域大小 Java_我的世界:Java版开发者们畅聊水域更新
  16. 值得回忆2012年-飘渺的2013年
  17. 关于Linux中的SIGABRT信号
  18. Mysql报错 Cannot delete or update a parent row: a foreign key constraint fails
  19. HTML用画布画哆啦A梦,前端小项目:使用canvas绘画哆啦A梦
  20. Buying Hay 购买干草 完全背包

热门文章

  1. 可與言而不與之言,失人。不可與言而與之言,失言。知者不失人,亦不失言。
  2. php微博批量管理工具,简单快速批量取消微博的关注
  3. 太阳直射点纬度计算公式_高中地理——每日讲1题(太阳直射点、太阳高度角、太阳视运动)...
  4. 20191101(33) 针对 RT-Thread 下 ADS1256 移植说明(SPI)
  5. 解决:关于电脑访问百度很慢的问题
  6. 艾永亮:亏损7年到年销100亿,百果园如何在小水果里做出大生意?
  7. MySQL中表的增删查改操作(CRUD)
  8. 苹果怎么换字体_苹果手机电池不行了怎么办,换什么牌子好?
  9. 可以打开c语言的压缩包软件,File Magic(全格式文件打开软件)v1.9.8.19免费版
  10. win10防火墙_怎么关闭防火墙