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>
总结:
Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)的更多相关文章
- Hibernate 多表关联映射- 一对多关系映射(one-to-many)
Hibernage.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate框架之关联映射入门
关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一:配置单向多对一关联 在Emp类中定义一个Dept属性,而在Dept类中无须定义用于存放Emp对象的集合属性 01.Dept. ...
- Hibernate一对一双向关联映射
关键原因在于对象模型具有方向性: 单向:一端只能加载另一端,不能反过来. 双向:两端都可以加载另一端. 问题来了:如何我们想从身份证端(IdCard)加载人(Person),怎么办呢? 下面我们开始介 ...
- Hibernate之1-N关联映射
一.Hibernate之1-N关联映射 1. 哪边是 1 , 哪边是多 ? 须要从业务的角度来说明.比如,Employee 和 Department 之间就是 n-1 的关联关系,Order ...
- Hibernate 、多表关联映射-组件关联映射(component)
组件关联映射可以将一些简小的数据与主题放在一个表中,例如firstName 和LastName这两个结合在一起可以组成一个名字,但是再分别将这两个再建一个表就不太合适了,这个时候可以用到组件关联映射: ...
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
hibernate.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...
- Hibernate多对多关联映射的HQL中的in条件查询问题
群里有朋友求解一个问题,高分求一条HQL多对多查询语句 . 问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f758 ...
- 【Hibernate框架】关联映射(多对多关联映射)
按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...
随机推荐
- API接口测试01理论
定义 接口测试是系统组件间及多个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 ...
- Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
继续并发专题~ FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞. 由于:Fu ...
- C语言的本质(16)——函数接口的传入参数与传出参数
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数),例如strcpy的函数原型为 char *strcp ...
- win7远程工具mstsc.exe
相信很多人都用过类似QQ远程这样的远程工具,其实自xp开始windows就自带了远程工具mstsc.exe. 我只是介绍了如何使用远程工具登入别人的电脑. 首先,在开始->运行->msts ...
- 【LeetCode练习题】Climbing Stairs
Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time you c ...
- SpringMVC+easyui显示数据
近期做毕业设计,想用easyui,先学习一下CRUD.今天先弄了个表格显示数据库的数据.jsp页面还有非常多其他元素,我就不贴上去了.我显示数据的JSP为/WebContent/WEB-INF/vie ...
- XPath在asp.net中查询XML
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- android Handler更新UI
android中经常需要更新界面某个元素的值,但是在主线程中是不可以直接更新主线程的值.这里推荐通过handler机制来更新值. 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主 ...
- Ubuntu 13.10 下安装node
1.首先更新Ubuntu在线包:sudo apt-get update && sudo apt-get dist-upgrade, 2.默认Ubuntu已经安装python的,具体版本 ...
- c++到c#数据类型的转换
c++与c#的类型转换 分类:cSharp | 标签: c# system intptr char uint 2012-02-29 19:54 阅读(513)评论(0)编辑删除 //c++: ...