Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(<idbag><collection-id>)

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" type="string" >
13         <column name="NAME" length="15" />
14     </property>
15
16    <property name="age" type="int" >
17         <column name="AGE" />
18    </property>
19
20    <idbag   name="images"   table="IMAGES"    lazy="true">
21         <collection-id type="long" column="ID">
22            <generator class="increment"/>
23         </collection-id>
24         <key column="MONKEY_ID" />
25         <element column="FILENAME" type="string"  not-null="true"/>
26    </idbag>
27
28   </class>
29
30 </hibernate-mapping>

3.

 1 package mypack;
 2
 3 import java.io.Serializable;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6
 7 public class Monkey implements Serializable {
 8     private Long id;
 9     private String name;
10     private int age;
11     private List images=new ArrayList();
12
13     /** full constructor */
14     public Monkey(String name, int age,List images) {
15         this.name = name;
16         this.age=age;
17         this.images = images;
18     }
19
20     /** default constructor */
21     public Monkey() {
22     }
23
24     /** minimal constructor */
25     public Monkey(List images) {
26         this.images = images;
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 String getName() {
38         return this.name;
39     }
40
41     public void setName(String name) {
42         this.name = name;
43     }
44
45     public int getAge() {
46         return this.age;
47     }
48
49     public void setAge(int age) {
50         this.age = age;
51     }
52
53     public List getImages() {
54         return this.images;
55     }
56
57     public void setImages(List images) {
58         this.images = images;
59     }
60
61 }

4.

 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   public Monkey loadMonkey(long id){
37       Session session = sessionFactory.openSession();
38       Transaction tx = null;
39       try {
40        tx = session.beginTransaction();
41        Monkey monkey=(Monkey)session.get(Monkey.class,new Long(id));
42        Hibernate.initialize(monkey.getImages());
43        tx.commit();
44       return monkey;
45     }catch (RuntimeException e) {
46       if (tx != null) {
47         // Something went wrong; discard all partial changes
48         tx.rollback();
49       }
50       throw e;
51     } finally {
52       // No matter what, close the session
53       session.close();
54     }
55   }
56
57    public void test(){
58       List images=new ArrayList();
59       images.add("image1.jpg");
60       images.add("image4.jpg");
61       images.add("image2.jpg");
62       images.add("image2.jpg");
63       images.add("image5.jpg");
64
65       Monkey monkey=new Monkey("Tom",21,images);
66       saveMonkey(monkey);
67
68       monkey=loadMonkey(1);
69       printMonkey(monkey);
70
71   }
72
73   private void printMonkey(Monkey monkey){
74      System.out.println(monkey.getImages().getClass().getName());
75      Iterator it=monkey.getImages().iterator();
76      while(it.hasNext()){
77         String fileName=(String)it.next();
78         System.out.println(monkey.getName()+" "+fileName);
79      }
80   }
81   public static void main(String args[]){
82     new BusinessService().test();
83     sessionFactory.close();
84   }
85 }

5.

 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    AGE int,
 9    primary key (ID)
10 );
11
12 create table IMAGES(
13    ID bigint not null,
14    MONKEY_ID bigint not null,
15    FILENAME varchar(15) not null,
16    primary key (ID)
17 );
18
19 alter table IMAGES add index IDX_MONKEY(MONKEY_ID), add constraint FK_MONKEY foreign key (MONKEY_ID) references MONKEYS(ID);

6.

 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/Monkey.hbm.xml" />
27     </session-factory>
28 </hibernate-configuration>
时间: 2024-08-09 14:44:35

Hibernate逍遥游记-第12章 映射值类型集合-002映射Bag(<idbag><collection-id>)的相关文章

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(十)--- 映射值类型集合

一.映射Set(集):未排序,无重复. 实例代码: ? 1 2 3 4 <set name="images" table="IMAGES" lazy="true" > <key column="CUSTOMER_ID" /> <element column="FILENAME" type="string" not-null="true"/

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逍遥游记-第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逍遥游记-第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 &l

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=