1.定义实体

  1. public class User {
  2. private int userId;
  3. private String userName;
  4. private Set<String> address;
  5. set...
  6. get...
  7. }

2.写映射文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="com.juaner.hibernate.address">
  6. <class name="User" table="t_user">
  7. <id name="userId" column="u_id">
  8. <generator class="native"/>
  9. </id>
  10. <property name="userName" column="u_name"/>
  11. <set name="address" table="t_address">
  12. <!--外键字段-->
  13. <key column="u_id"></key>
  14. <!--其他字段,没有bean与其对应,必须制定type-->
  15. <element column="address" type="string"></element>
  16. </set>
  17. <!--list有先后顺序,list-index制定排序列的名称-->
  18. <!--<list name="addressList" table="t_addresslist">-->
  19. <!--<key column="u_id"></key>-->
  20. <!--<list-index column="idx"></list-index>-->
  21. <!--<element column="address" type="string"></element>-->
  22. <!--</list>-->
  23. </class>
  24.  
  25. </hibernate-mapping>

3.保存数据

  1. @Test
  2. public void testSave()throws Exception{
  3. Session session = sf.openSession();
  4. session.beginTransaction();
  5.  
  6. Set<String> address = new HashSet<String>();
  7. address.add("广州");
  8. address.add("北京");
  9.  
  10. User user = new User();
  11. user.setUserName("jack");
  12. user.setAddress(address);
  13. session.save(user);
  14. session.getTransaction().commit();
  15. session.close();
  16. }

4.结果

  t_user表:

  

  t_address表:

   

5.获取数据

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

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. SVN标准目录结构

    Trunk 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码. 这里的代码将会工作到你的下一个主要发布版本. Trunk应该只被用来开发将会成为你的下一个重要 ...

  2. 转:随机函数 C++中rand()函数的用法

    转自:http://blog.163.com/wujiaxing009@126/blog/static/719883992011113011359154/ 一.C++中不能使用random()函数   ...

  3. PHP 实现多服务器共享 SESSION 数据

    PHP 实现多服务器共享 SESSION 数据 2011 年 12 月 05 日评论暂缺 一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一 ...

  4. servlet 文件上传简易版

    package cn.itcast.servlet; import java.io.File;import java.io.IOException;import java.util.List; imp ...

  5. ios AudioQueueStart returns -50 录音失败问题

    ios AudioQueueStart returns -50 录音失败问题 使用iOS录音时,如果在应用的别处有语音的操作,可能会出现上述问题: 导致录音机打开失败!无法录音,并且 AudioQue ...

  6. 日期操作类--Date类

    Date-API ava.util包提供了Date类来封装当前的日期和时间.Date类提供两个构造函数来实例化Date对象.第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函 ...

  7. http协议分析工具【转】

    转自:http://www.cnblogs.com/klguang/p/4624333.html

  8. Linux配置邮箱发送(MUTT/MSMTPQ)

    配置邮箱发送 http://www.ilanni.com/?p=10589

  9. hdu----(5045)Contest(数位dp)

    Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  10. Wilcoxon test

    clear load NPSVOR name={'SCV1V1','SVC1VA','SVR','CSSVC','SVMOP','NNOP','ELMOP','POM',... 'NNPOM', 'S ...