hibernate集合映射

<!-----------------------------建立组件类Friends.java-------------------------------------->
package com.michael.model;

import java.util.ArrayList;
import java.util.List;


public class Friends {

private String sex;
private String f_name;
private List<String> cars = newArrayList<String>();
private Person person;

public Friends() {
}

public Friends(String f_name, String sex) {
this.f_name = f_name;
this.sex = sex;
}

public List<String> getCars(){
return cars;
}

public void setCars(List<String>cars) {
this.cars = cars;
}

public Person getPerson() {
return person;
}

public void setPerson(Person person) {
this.person = person;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getF_name() {
return f_name;
}

public void setF_name(String fName) {
f_name = fName;
}

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj != null &&obj.getClass() == Friends.class) {
Friends target = (Friends) obj;
if (target.getF_name().equals(getF_name())) {
return true;
}
}
return false;
}

@Override
public int hashCode() {
return getF_name().hashCode() * 13 +getSex().hashCode();
}

}
<!-------------------------------建立一个持久化类Person.java-------------------------------->
package com.michael.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

// default package


public class Person {

private String name;
private int age;
private int id;
//list集合
private List<String> schools =new ArrayList<String>();
//set集合
private Set<String> animas = newHashSet<String>();
//map集合
private Map<String, Integer>course = new HashMap<String,Integer>();
//map集合的属性为组件
private Map<String, Friends>friends = new HashMap<String,Friends>();
//组件为map集合的索引
private Map<Friends, Integer>friends2 = new HashMap<Friends,Integer>();
//组件属性为集合
private Friends friends1;

public Friends getFriends1() {
return friends1;
}

public void setFriends1(Friends friends1) {
this.friends1 = friends1;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public List<String> getSchools(){
return schools;
}

public voidsetSchools(List<String> schools){
this.schools = schools;
}

public Set<String> getAnimas(){
return animas;
}

public voidsetAnimas(Set<String> animas) {
this.animas = animas;
}

public Map<String, Integer>getCourse() {
return course;
}

public void setCourse(Map<String,Integer> course) {
this.course = course;
}


public Map<String, Friends>getFriends() {
return friends;
}

public void setFriends(Map<String,Friends> friends) {
this.friends = friends;
}

public Map<Friends, Integer>getFriends2() {
return friends2;
}

public void setFriends2(Map<Friends,Integer> friends2) {
this.friends2 = friends2;
}

}
<!----------------------------建立持久化类对应的映射文件Person.hbm.xml-------------------------->
<?xml version="1.0"encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping fileautogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.michael.model.Person"table="person">
 
  <id name="id"type="java.lang.Integer">
  <columnname="id"></column>
  <generatorclass="identity"></generator>
  </id>
 
      <property name="name"type="java.lang.String">
            <column name="name" />
        </property>
        <property name="age"type="java.lang.Integer">
            <column name="age" />
        </property>
         
        <!-- list集合映射-->
        <list name="schools"table="school">
        <key column="personid"not-null="true"></key>
        <list-indexcolumn="list_order"></list-index>
        <element type="string"column="school_name"></element>
        </list>
       
        <!-- 因为set是无序集合,所以无需配置list-index-->
        <set name="animas"table="animas">
        <keycolumn="person_animas_id"></key>
        <element type="string"column="animas_name"></element>
        </set>
       
        <!-- map集合映射 要配置map-key-->
        <map name="course"  table="course">
        <keycolumn="person_course_id"></key>
        <map-key type="string"column="course_name"></map-key>
        <element type="int"column="score"></element>
        </map>
         
        <!--  map集合的属性为组件 -->
        <map name="friends"table="friends">
        <keycolumn="person_friends_id"></key>
        <map-key type="string"column="friend_name"></map-key>
        <composite-elementclass="com.michael.model.Friends">
        <parentname="person"/>
        <property name="f_name"></property>
        <property name="sex"></property>
        </composite-element>
        </map>

  <!-- 组件作为Map的索引  必须得重写组件类的equals()和hashCode()-->
        <map name="friends2"table="frindes2">
        <keycolumn="person_friends2_id"></key>
        <composite-map-keyclass="com.michael.model.Friends">
        <key-propertyname="f_name"></key-property>
        <key-propertyname="sex"></key-property>
        </composite-map-key>
        <element type="int"column="num"></element>
        </map>
         
        <!-- 组件属性为集合-->
        <component name="friends1"class="com.michael.model.Friends">
        <parentname="person"/>
        <propertyname="f_name"></property>
        <propertyname="sex"></property>
        <list name="cars"table="cars">
        <keycolumn="person_cars_id"></key>
        <list-indexcolumn="list_order"></list-index>
        <element type="string"column="car_name" />
        </list>
        </component>
      </class>
</hibernate-mapping>
<!------------------建立一个junit测试--------------------------------->
package com.michael.test;

import junit.framework.TestCase;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction;


import com.michael.HibernateSessionFactory;
import com.michael.model.Friends;
import com.michael.model.Person;

public class Test extends TestCase {
public void testOrm(){
Session session = HibernateSessionFactory.getSession();
//映射list集合
List<String> schools = newArrayList<String>();
schools.add("1");
schools.add("2");
schools.add("3");
//映射set集合
Set<String> animas = newHashSet<String>();
animas.add("3");
animas.add("3q");
animas.add("3e");
//映射map集合
Map<String,Integer> course = newHashMap<String,Integer>();
course.put("a", 80);
course.put("b", 90);
course.put("c", 85);
//组件属性为集合
List<String> cars = newArrayList<String>();
cars.add("bmw");
cars.add("奔驰");
//map集合属性为组件
Friends f = new Friends();
f.setF_name("AA");
f.setSex("男");
f.setCars(cars);
Map<String,Friends> maps = newHashMap<String,Friends>();
maps.put("1", f);
//组件为map集合的索引
Map<Friends,Integer> maps2 = newHashMap<Friends, Integer>();
maps2.put(f, 45);
Person p   = new Person();
p.setSchools(schools);
p.setAnimas(animas);
p.setCourse(course);
p.setFriends1(f);
p.setFriends(maps);
p.setFriends2(maps2);
Transaction tr = session.beginTransaction();
tr.begin();
session.save(p);
tr.commit();
HibernateSessionFactory.closeSession();
}
}

运行junit测试,如果成功,那么在各个数据库表中都会有对应的数据插入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值