Hibernate学习笔记(对象-集合关系映射)

hiberntae源数据映射:

集合关系映射的实现:

list/set/map 这里的集合类型中保存的是(Integer,String,Date等),不保存实际的持久化对象。

首先来看set:

如下面l例子所示:

//比如有user这个持久化类,其中有favorates这样一个set集合类型
public class User {
	private Integer u_id;
	private String userName;
	private Set<String> favorates = new HashSet<String>();

	public Set<String> getFavorates() {
		return favorates;
	}

	public void setFavorates(Set<String> favorates) {
		this.favorates = favorates;
	}
	 public Integer getU_id() {
 	 return u_id;
 }
	 public void setU_id(Integer u_id) {
	  this.u_id = u_id;
 }
	 public String getUserName() {
  	return userName;
 }
 	public void setUserName(String userName) {
  	this.userName = userName;
 }
}

     

//配置文件user.hbm.xml如下:<hibernate-mapping package="com.fisher">
 <class name="User" table="t_user">
  <id name="u_id" column="f_user_id" type="integer">
   <generator class="identity"></generator>
  </id>
  <property name="userName" type="string" column="f_userName"></property>
  <set name="favorates" table="t_favorates" ><!--建立一个表用于保存favorates-->
   <key column="fk_favorate_id"></key><!--这里的key代表的是t_favorates中的外键,它是要引用user类,并指向user表中的主键u_id-->
   <element type="string" column="favorate"></element><!--set集合中的元素-->
  </set>
 </class>

 

再来看看关于list集合的映射关系:

在user类中加上list集合属性 

//GET,SET方法我就没写了
public class User {
	private Integer u_id;
	private String userName;
	private Set<String> favorates = new HashSet<String>();
	private List<String> interestings = new ArrayList<String>();
}

     新加入的list属性在xml文件中的配置如:

	<list name="interestings" table="t_intst" >
			<key column="fk_intst_id"></key>
			<index column="f_intest_index"></index>
			<element type="string" column="f_intst"></element>
		</list><!--配置和set相似,不过多了一个index标签,因为list集合是有序的,那么f_intest_index和fk_intst_id将作为联合外键方式来指向user类中的主键-->

                                              

 

你可能感兴趣的:(Hibernate,xml,F#)