Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)


Set类型的使用:

<hibernate-mapping package="cn.model">
	<class name="Department" table="DEPARTMENT">
		<id name="id" column="ID">
			<generator class="native"></generator>
		</id>
		<property name="name" column="NAME" type="java.lang.String" />
		<set name="employees">
			<key column="DEPT_ID" />
			<one-to-many class="Employee"/>
		</set>
	</class> 
</hibernate-mapping>

Set是最常见的在Hibernate中对集合进行映射的类型,其配置也很简单; 


List类型的使用:


<hibernate-mapping package="cn.model">
	<class name="Department" table="DEPARTMENT">
		<id name="id" column="ID">
			<generator class="native"></generator>
		</id>
		<property name="name" column="NAME" type="java.lang.String" />
		<list name="employees">
			<key column="DEPT_ID" />
		    <list-index column="EMPLOYEE_INDEX" />
			<one-to-many class="Employee"/>
		</list>
	</class> 
</hibernate-mapping>


使用List进行集合映射有一点特殊,List是按顺序进行存入所以Hibernate还需要在表中新增一个排序列来存入数据存入的顺序:

Hibernate: 
    create table EMPLOYEE (
        ID integer not null auto_increment,
        NAME varchar(255),
        DEPT_ID integer,
        EMPLOYEE_INDEX integer,
        primary key (ID)
    )




Bag类型的使用:

如果想使用List,但又不想在表中产生排序列,那可以使用Bag ;在实体中还是使用List,但在Hbm.xml映射文件中将list改为bag即可:

public class Department {

	private Integer id;
	private String name;
	private List<Employee> employees;
	
	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 List<Employee> getEmployees() {
		return employees;
	}
	public void setEmployees(List<Employee> employees) {
		this.employees = employees;
	}
	
}
<hibernate-mapping package="cn.model">
	<class name="Department" table="DEPARTMENT">
		<id name="id" column="ID">
			<generator class="native"></generator>
		</id>
		<property name="name" column="NAME" type="java.lang.String" />
		<bag name="employees">
			<key column="DEPT_ID" />
			<one-to-many class="Employee"/>
		</bag>
	</class> 
</hibernate-mapping>


Map类型的使用:

使用Map类型对集合进行映射,程序中用的不多,但是也有存在,配置相比Set和Bag较麻烦一点:

<hibernate-mapping package="cn.model">
	<class name="Department" table="DEPARTMENT">
		<id name="id" column="ID">
			<generator class="native"></generator>
		</id>
		<property name="name" column="NAME" type="java.lang.String" />
		<map name="employees">
			<key column="DEPT_ID" />
			<map-key type="string" column="name" />
			<one-to-many class="Employee"/>
		</map>
	</class> 
</hibernate-mapping>


数组Object[]类型的使用:

数组类型映射和List有点类似,都是需要一个排序的列:

public class Department {

	private Integer id;
	private String name;
	private Employee[] employees;
	
	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 Employee[] getEmployees() {
		return employees;
	}
	public void setEmployees(Employee[] employees) {
		this.employees = employees;
	}
	
}

<hibernate-mapping package="cn.model">
	<class name="Department" table="DEPARTMENT">
		<id name="id" column="ID">
			<generator class="native"></generator>
		</id>
		<property name="name" column="NAME" type="java.lang.String" />
		<array name="employees">
			<key column="DEPT_ID" />
			<list-index column="EMPLOYEE_INDEX" />
			<one-to-many class="Employee"/>
		</array>
	</class> 
</hibernate-mapping>


总结:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值