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. Maven最佳实践:划分模块

    http://juvenshun.iteye.com/blog/305865 ************************************* "分天下为三十六郡,郡置守,尉,监& ...

  2. Nginx安装(zhuan)

    http://www.nginx.cn/install ************************ nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. ...

  3. linux mount命令的用法详细解析

    挂接命令(mount)首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的.命令格式:mount [-t vfstype] [-o options] ...

  4. Android menu 简单创建

    在android 中与menu相关的类有4个: Menu:菜单的父窗口,用于创建一个菜单,是subMenu,ContentMenu,MenuItem等的父接口:SubMenuyo用于创建子菜单,Con ...

  5. about opencl

    Platform:LG G3,Adreno 330 1. 8M(3264x2448) memmap方式读入时间24ms,读出时间12ms,时间与内存大小基本成线性关系.使用memmap 与 memco ...

  6. html中盒子模型立体结构图

    边框(border),位于盒子的第一层..元素内容(content).内边距(padding),两者同位于第二层..背景图(background-image),位于第三层..背景色(backgroun ...

  7. vc++编译libtiff4.0.4

    目录 第1章简介    1 第2章命令行编译    2 2.1 编译    2 2.1.1 使用VC++2010编译    2 2.1.2 使用VC++6编译    4 2.2 生成的文件    5 ...

  8. Linq分页查询

    //Linq分页查询 int pageIndex = Convert.ToInt32(HttpContext.Current.Request["PageIndex"]); int ...

  9. Leetcode--Add two number

    地址:https://leetcode.com/problems/add-two-numbers/ 代码: class Solution { public: ListNode* addTwoNumbe ...

  10. swiftlint升级

    ~/Opal/iOS/App (mike/lyrics) $ which brew/usr/local/bin/brew~/Opal/iOS/App (mike/lyrics) $ cd /usr/l ...