Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)

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       <discriminator column="MONKEY_TYPE" type="string"  />
12       <property name="name" type="string" column="NAME" />
13
14       <many-to-one
15         name="team"
16         column="TEAM_ID"
17         class="mypack.Team"
18       />
19
20       <subclass name="mypack.JMonkey" discriminator-value="JM" >
21          <property name="color" column="COLOR" type="string" />
22       </subclass>
23
24       <subclass name="mypack.CMonkey" discriminator-value="CM" >
25          <property name="length" column="LENGTH" type="double" />
26       </subclass>
27
28     </class>
29
30 </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.Team" table="TEAMS" >
 8     <id name="id" type="long" column="ID">
 9       <generator class="increment"/>
10     </id>
11
12     <property name="name" type="string"  column="NAME" />
13     <set
14         name="monkeys"
15         inverse="true"
16      >
17         <key column="TEAM_ID" />
18         <one-to-many class="mypack.Monkey" />
19      </set>
20
21   </class>
22 </hibernate-mapping>

4.

 1 package mypack;
 2
 3 abstract public class Monkey{
 4
 5     private Long id;
 6     private String name;
 7     private Team team;
 8
 9     /** full constructor */
10     public Monkey(String name,Team team) {
11         this.name = name;
12         this.team = team;
13     }
14
15     /** default constructor */
16     public Monkey() {
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 getName() {
28         return this.name;
29     }
30
31     public void setName(String name) {
32         this.name = name;
33     }
34
35     public Team getTeam() {
36         return this.team;
37     }
38
39     public void setTeam(Team team) {
40         this.team = team;
41     }
42 }

5.

 1 package mypack;
 2
 3 public class CMonkey extends Monkey {
 4
 5     private double length;
 6
 7     /** full constructor */
 8     public CMonkey(String name, double length,Team team) {
 9         super(name,team);
10         this.length=length;
11
12     }
13
14     /** default constructor */
15     public CMonkey() {
16     }
17
18    public double getLength() {
19         return this.length;
20     }
21
22     public void setLength(double length) {
23         this.length = length;
24     }
25 }

6.

 1 package mypack;
 2
 3
 4 public class JMonkey extends Monkey{
 5
 6     private String color;
 7
 8     /** full constructor */
 9     public JMonkey(String name, String color,Team team) {
10         super(name,team);
11         this.color=color;
12     }
13
14     /** default constructor */
15     public JMonkey() {
16     }
17
18     public String getColor() {
19         return this.color;
20     }
21
22     public void setColor(String color) {
23         this.color = color;
24     }
25
26 }

7.

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

8.

  1 package mypack;
  2
  3 import org.hibernate.*;
  4 import org.hibernate.cfg.Configuration;
  5 import java.util.*;
  6 import java.sql.*;
  7
  8 public class BusinessService{
  9   public static SessionFactory sessionFactory;
 10   static{
 11      try{
 12        Configuration config = new Configuration().configure();
 13        sessionFactory = config.buildSessionFactory();
 14      }catch(RuntimeException e){e.printStackTrace();throw e;}
 15
 16   }
 17
 18   public void saveMonkey(Monkey monkey) {
 19       Session session = sessionFactory.openSession();
 20       Transaction tx = null;
 21       List results=new ArrayList();
 22       try {
 23        tx = session.beginTransaction();
 24        session.save(monkey);
 25        tx.commit();
 26     }catch (RuntimeException e) {
 27       if (tx != null) {
 28         tx.rollback();
 29       }
 30       throw e;
 31     } finally {
 32       session.close();
 33     }
 34   }
 35
 36
 37   public List findAllJMonkeys(){
 38       Session session = sessionFactory.openSession();
 39       Transaction tx = null;
 40
 41       try {
 42
 43        tx = session.beginTransaction();
 44        List results=session.createQuery("from JMonkey").list();
 45        tx.commit();
 46        return results;
 47     }catch (RuntimeException e) {
 48       if (tx != null) {
 49         tx.rollback();
 50       }
 51       throw e;
 52     } finally {
 53       session.close();
 54     }
 55   }
 56
 57   public List findAllMonkeys(){
 58       Session session = sessionFactory.openSession();
 59       Transaction tx = null;
 60
 61       try {
 62        tx = session.beginTransaction();
 63        List results=session.createQuery("from Monkey").list();
 64        tx.commit();
 65        return results;
 66      }catch (RuntimeException e) {
 67       if (tx != null) {
 68         tx.rollback();
 69       }
 70       throw e;
 71     } finally {
 72       session.close();
 73     }
 74   }
 75
 76   public Team loadTeam(long id){
 77       Session session = sessionFactory.openSession();
 78       Transaction tx = null;
 79       try {
 80        tx = session.beginTransaction();
 81        Team team=(Team)session.get(Team.class,new Long(id));
 82        Hibernate.initialize(team.getMonkeys());
 83       tx.commit();
 84       return team;
 85     }catch (RuntimeException e) {
 86       if (tx != null) {
 87         tx.rollback();
 88       }
 89       throw e;
 90     } finally {
 91       session.close();
 92     }
 93   }
 94
 95    public void test(){
 96       List jMonkeys=findAllJMonkeys();
 97       printAllMonkeys(jMonkeys.iterator());
 98
 99       List monkeys=findAllMonkeys();
100       printAllMonkeys(monkeys.iterator());
101
102       Team team=loadTeam(1);
103       printAllMonkeys(team.getMonkeys().iterator());
104
105       Monkey monkey=new JMonkey("Mary","yellow",team);
106       saveMonkey(monkey);
107
108   }
109
110   private void printAllMonkeys(Iterator it){
111      while(it.hasNext()){
112         Monkey m=(Monkey)it.next();
113         if(m instanceof JMonkey)
114           System.out.println(((JMonkey)m).getColor());
115         else
116           System.out.println(((CMonkey)m).getLength());
117       }
118   }
119   public static void main(String args[]) {
120     new BusinessService().test();
121     sessionFactory.close();
122   }
123 }

9.

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <!DOCTYPE hibernate-configuration
 3  PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
 4  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5
 6 <hibernate-configuration>
 7     <session-factory>
 8         <property name="dialect">
 9             org.hibernate.dialect.MySQLDialect
10         </property>
11         <property name="connection.driver_class">
12             com.mysql.jdbc.Driver
13         </property>
14         <property name="connection.url">
15             jdbc:mysql://localhost:3306/sampledb
16         </property>
17         <property name="connection.username">
18             root
19         </property>
20         <property name="connection.password">
21             1234
22         </property>
23
24         <property name="show_sql">true</property>
25
26         <mapping resource="mypack/Team.hbm.xml" />
27         <mapping resource="mypack/Monkey.hbm.xml" />
28     </session-factory>
29 </hibernate-configuration>

10.

 1 drop database if exists SAMPLEDB;
 2 create database SAMPLEDB;
 3 use SAMPLEDB;
 4
 5 create table TEAMS (
 6    ID bigint not null,
 7    NAME varchar(15),
 8    primary key (ID)
 9 );
10 create table MONKEYS (
11    ID bigint not null,
12    NAME varchar(15),
13    MONKEY_TYPE varchar(2),
14    COLOR varchar(15),
15    LENGTH double precision,
16    TEAM_ID bigint,
17    primary key (ID)
18 );
19
20 alter table MONKEYS add index IDX_TEAM(TEAM_ID), add constraint FK_TEAM foreign key (TEAM_ID) references TEAMS (ID);
21
22 insert into TEAMS(ID,NAME) values(1,‘ABC Company‘);
23
24 insert into MONKEYS(ID,MONKEY_TYPE,NAME,COLOR,LENGTH,TEAM_ID) values(1,‘JM‘,‘Tom‘,‘yellow‘,null,1);
25
26 insert into MONKEYS(ID,MONKEY_TYPE,NAME,COLOR,LENGTH,TEAM_ID) values(2,‘JM‘,‘Mike‘,‘orange‘,null,1);
27
28 insert into MONKEYS(ID,MONKEY_TYPE,NAME,COLOR,LENGTH,TEAM_ID) values(3,‘CM‘,‘Jack‘,null,1.2,1);
29
30 insert into MONKEYS(ID,MONKEY_TYPE,NAME,COLOR,LENGTH,TEAM_ID) values(4,‘CM‘,‘Linda‘,null,2.0,1);
时间: 2024-10-13 11:40:07

Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)的相关文章

Hibernate逍遥游记-第4章映射对象标识符-increment、identity、hilo、native、assigned、sequence、&lt;meta&gt;

1. 1 package mypack; 2 3 import java.lang.reflect.Constructor; 4 import org.hibernate.*; 5 import org.hibernate.cfg.Configuration; 6 import java.io.*; 7 import java.sql.Time; 8 import java.util.*; 9 10 public class BusinessService{ 11 public static S

Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(&lt;idbag&gt;&lt;collection-id&gt;)

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 &l

Hibernate逍遥游记-第12章 映射值类型集合-003映射List(&lt;list-index&gt;)

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 <c

Hibernate逍遥游记-第12章 映射值类型集合-001映射set(&lt;element&gt;)

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 &l

Hibernate逍遥游记-第5章映射一对多-02双向inverse

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 <c

Hibernate逍遥游记-第5章映射一对多-01单向cascade、lazy

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 <c

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

1. 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 10 /** 初始化Hibernate,创建SessionFactory实例 */ 11 static{ 1

Hibernate逍遥游记-第15章处理并发问题-003乐观锁

1. 2. 1 drop database if exists SAMPLEDB; 2 create database SAMPLEDB; 3 use SAMPLEDB; 4 5 drop table if exists MONKEYS ; 6 create table MONKEYS( 7 ID bigint not null, 8 NAME varchar(15), 9 COUNT int, 10 VERSION integer, 11 primary key (ID) 12 ) type=

Hibernate逍遥游记-第15章处理并发问题-001事务并发问题及隔离机制介绍

1. 2.第一类丢失更新 3.脏读 4.虚读.幻读 5.不可重复读 6.第二类丢失更新 7.数据库的锁机制 8.数据库事务的隔离机制