1.定义实体

public class User {
private int userId;
private String userName;
private Set<String> address;
set...
get...
}

2.写映射文件

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.juaner.hibernate.address">
<class name="User" table="t_user">
<id name="userId" column="u_id">
<generator class="native"/>
</id>
<property name="userName" column="u_name"/>
<set name="address" table="t_address">
<!--外键字段-->
<key column="u_id"></key>
<!--其他字段,没有bean与其对应,必须制定type-->
<element column="address" type="string"></element>
</set>
<!--list有先后顺序,list-index制定排序列的名称-->
<!--<list name="addressList" table="t_addresslist">-->
<!--<key column="u_id"></key>-->
<!--<list-index column="idx"></list-index>-->
<!--<element column="address" type="string"></element>-->
<!--</list>-->
</class> </hibernate-mapping>

3.保存数据

    @Test
public void testSave()throws Exception{
Session session = sf.openSession();
session.beginTransaction(); Set<String> address = new HashSet<String>();
address.add("广州");
address.add("北京"); User user = new User();
user.setUserName("jack");
user.setAddress(address);
session.save(user);
session.getTransaction().commit();
session.close();
}

4.结果

  t_user表:

  

  t_address表:

   

5.获取数据

    @Test
public void test3()throws Exception{
Session session = sf.openSession();
session.beginTransaction(); User user = (User) session.get(User.class, 1);
System.out.println(user);
//当查询用户,同时可以获取用户关联的list集合的数据
//当使用到集合数据时,才向数据库发送执行的sql语句(懒加载,可以提高执行效率)
System.out.println(user.getAddressList()); session.getTransaction().commit();
session.close();
}

Hibernate中的集合映射的更多相关文章

  1. HIbernate学习笔记(七) hibernate中的集合映射和继承映射

    九.       集合映射 1. Set 2. List a)        @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...

  2. hibernate中对象集合的保存

    一.在java web设计中经常使用对象进行操作,在hibernate中对象集合的保存(一对多) 1需要进行如下步骤: 1) 设计数据表关系 2)引入jar包,需要注意引入数据库connector 3 ...

  3. Hibernate中的一对一映射关系

    Hibernate中的一对一映射关系有两种实现方法(单向一对一,和双向一对一)(一对一关系:例如一个department只能有一个manager) 单向和双向有什么区别呢??例如若是单向一对一,比如在 ...

  4. Hibernate总结(二)---hibernate中的各种映射

    知识的准备: (参考:汤阳光Hibernate3.6(基础)) 一.浅谈javaBean之间的关系 存在的关系: 1.关联(一对一.一对多.多对一.多对多) 2.聚合/组合(最后考虑) 3.继承 所以 ...

  5. Hibernate 中对象关系映射(ObjectRelationMapping)

    1.什么是对象关系映射? 解析:对象-关系映射(Object Relational Mapping,简称ORM,对象关系映射)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说, ...

  6. Hibernate中的继承映射

    1.继承映射 继承映射分为两种情况:简单继承映射和继承映射. 在简单继承映射中,每个子类都要写一个映射文件. 在继承映射中,只使用一个映射文件.继承映射分为三种情况: 所有子类映射到一张表 需要使用鉴 ...

  7. Hibernate中的组合映射

    1.实体bean设计 car: public class Car { private int id; private String name; private Wheel wheel; set... ...

  8. Hibernate中的实体映射

     一.一对一映射  如人(Person)与身份证(IdCard) 的关系,即为一对一的关系,一个人只能有一张身份证,一张身份证只能属于某一个人,它们的关系图如下图所示: 在Person实体中添加一个属 ...

  9. Hibernate中一对一关联映射/组件映射

    Hibernate映射:一对一关联 1.按照外键映射 2.按照主键映射 组件映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这两种 映射方式分别 ...

随机推荐

  1. Android网络编程系列 一 Socket抽象层

     在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽 ...

  2. Android保存图像到相册

    在应用的图集中,通常会给用户提供保存图片的功能,让用户可以将自己喜欢的图片保存到系统相册中. 这个功能其实很好做,系统提供了现成的API: 简单的来说就这一行代码: [java]  MediaStor ...

  3. 在Maven中设置Nexus私有服务为中央工厂(repository)

    原文:http://blog.csdn.net/mexican_jacky/article/details/50275695 nexus中的仓库列表 第一种方式: <repositories&g ...

  4. CentOS查看CPU、内存、网络流量和磁盘 I/O【转载,待整理】

    http://blog.csdn.net/zbyufei/article/details/6413273

  5. D3.js 插入元素,删除元素

    插入元素涉及的函数有两个: 一.append():在选择集末尾插入元素 假设有三个段落元素 <p>Apple</p> <p>Pear</p> <p ...

  6. alertdialog.builder 自定义弹窗

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  7. iOS设置app应用程序文件共享

    1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 ...

  8. Lecture Notes: Macros

    原论文链接失效,特在这里保存一份 http://www.apl.jhu.edu/~hall/Lisp-Notes/Macros.html Lisp functions take Lisp values ...

  9. 【CITE】当类库项目中无法使用Application.StartupPath的时侯 (注:主要是在进行反射读取文件的时候!!)

    http://jcserver.blog.163.com/blog/static/24044859200851582354135/ 通常我们WinForm编程时,要获取程序当 前运行的文件夹路径会用A ...

  10. DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析

    DSP EPWM学习笔记2 - EPWM相关寄存器设置问题解析 彭会锋 本篇主要针对不太熟悉的TZ 故障捕获 和 DB 死区产生两个子模块进行学习研究 感觉TI的寄存器命名还是有一定规律可循的 SEL ...