Hibernate List 集合屬性的配置

用List 集合屬性時候 會生成兩張表, 且是根據  PO 類 的 標識屬性 (也就是數據庫的主鍵),與 List 集合生成的表 通過外鍵關聯 形成

用例如下:

1:編寫PO類

package zhourj.hibernate.list;

import java.util.ArrayList;
import java.util.List;
/*
 * List 集合的的映射
 * 要求持久集合只能申明爲 接口
 */
public class Person {
	private Integer id; // 標識屬性
	private String name;
	private int age;
	private List<String> schools = new ArrayList<String>();// 顯示初始化
	
	public Integer getId() {
		return id;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public List<String> getSchools() {
		return schools;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public void setSchools(List<String> schools) {
		this.schools = schools;
	}
}

2:編寫 Person.hbm.xml 部署文件

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="zhourj.hibernate.list">
	<class name="Person" table="person_inf">
		<id name="id">
			<generator class="identity"></generator>
		</id>
			<!-- 映射普通屬性 -->
		<property name="name" type="string" column="person_name"></property>
		<property name="age" type="int" column="person_age"></property>
		<!-- 映射List 集合 -->
		<list name="schools" table="school">
			<!-- 映射集合屬性 表的外鍵列 -->
			<key column="personid" not-null="true"></key>
			<!-- 映射集合屬性表的集合索引列 -->
			<list-index column="list_order"></list-index>
			<element type="string" column="school_name"></element>
		</list>
	</class>
</hibernate-mapping>

3:編寫測試類

package zhourj.hibernate.list;

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

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

import zhorj.hibernate.util.HibernateUtil;

public class PersonManager {
	public void  CreateAndStorePerson(){
		Session session = HibernateUtil.currentSession();
		// 開啓事物
		Transaction transaction = session.beginTransaction();
		Person person = new Person();
		person.setAge(23);
		person.setName("zhourj");
		List<String> schools = new ArrayList<String>();
		schools.add("湖南工學院");
		schools.add("岳陽縣二中");
		person.setSchools(schools);
		session.save(person);
		transaction.commit();
		HibernateUtil.closeSession();
	}
	public static void main(String[] args) {
		new PersonManager().CreateAndStorePerson();
	}
}

4:運行效果如下:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章