一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java中Hibernate持久化类(map)集合属性的元素为组件的映射

时间:2013-11-03 编辑:简简单单 来源:一聚教程网

1.hibernate.cfg.xml

 代码如下 复制代码

        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">



   
    org.hibernate.dialect.MySQLDialect
   
    com.mysql.jdbc.Driver
   
    root
   
    word">root
   
    jdbc:mysql://localhost:3306/hibernate
   
    20
   
    1
   
    5000
   
    true
   
    true
   
    true

    100
    3000
    2
    true
   
    create
   
   

2.持久化类 Member.java

 代码如下 复制代码

package org.Rudiment.hibernate;

import java.util.HashMap;
import java.util.Map;

public class Member {
    private Integer id;
    private String name;
    private Integer age;
    private Map addresses = new HashMap();
   
   
    public Map getAddresses() {
        return addresses;
    }
    public void setAddresses(Map addresses) {
        this.addresses = addresses;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
   
}

3.持久化类的组件类

 代码如下 复制代码

package org.Rudiment.hibernate;

import java.util.HashMap;
import java.util.Map;

public class Address {

    private String street;
    private String zipCode;
    private String city;

    private Member owner;
   
    public Member getOwner() {
        return owner;
    }
    public void setOwner(Member owner) {
        this.owner = owner;
    }
    public String getStreet() {
        return street;
    }
    public void setStreet(String street) {
        this.street = street;
    }
    public String getZipCode() {
        return zipCode;
    }
    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
}

4.持久化类的映射文件

 代码如下 复制代码


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


   
       
           
       

       
       
       
           
           
           
               
               
               
               
           

       

   

5.持久化类的操纵类 MemberHandler.java

 代码如下 复制代码

package org.Rudiment.hibernate;

import java.util.HashMap;
import java.util.Map;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class MemberHandler {

     public static void insert() {
             Configuration conf = new Configuration();
             conf.configure();
             ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry();
             SessionFactory sf = conf.buildSessionFactory(sr);
             Session session = sf.openSession();
            session.beginTransaction();
            Member m = new Member();
            m.setAge(24);
            m.setName("Louis");
           
            Address ad1 = new Address();
            ad1.setCity("广州");
            ad1.setOwner(m);
            ad1.setStreet("一号街");
            ad1.setZipCode("123");

            Address ad2 = new Address();
            ad2.setCity("深圳");
            ad2.setOwner(m);
            ad2.setStreet("二号街");
            ad2.setZipCode("456");

            Map am = new HashMap();
            am.put("地址一", ad1);
            am.put("地址二", ad2);

            m.setAddresses(am);
           
            session.save(m);
            session.getTransaction().commit();
            session.close();
        }
   
    public static void main(String[] args) {
            insert();
    }

}

 

注:

当运行MemberHandler的时候将发现,后台数据库多了一个 test_member 和 test_component 的数据表,表的内容如下:

 代码如下 复制代码

mysql> show tables;
+---------------------+
| Tables_in_hibernate |
+---------------------+
| test_component      |
| test_member         |
+---------------------+
2 rows in set (0.00 sec)

mysql> select * from test_member;
+----+------+-------+
| ID | AGE  | NAME  |
+----+------+-------+
|  1 |   24 | Louis |
+----+------+-------+
1 row in set (0.00 sec)

mysql> select * from test_component;
+--------------+-------------+---------------+-----------+---------------+
| component_id | home_street | home_zip_code | home_city | component_key |
+--------------+-------------+---------------+-----------+---------------+
|            1 | 一号街      | 123           | 广州      | 地址一        |
|            1 | 二号街      | 456           | 深圳      | 地址二        |
+--------------+-------------+---------------+-----------+---------------+
2 rows in set (0.00 sec)

热门栏目