在做持久化类的时候的规定:

1).有一个默认的构造方法;

2).所有的属性都有setter和getter方法

3).有一个对象标识符Oid;

4).如果有集合属性,则必须定义成接口类型:List、Set、Map。不能定义成类类型HashSet、hashMap、ArrayList等

1. Hibernate 高级映射

<set>元素:可以映射java.util.Set接口的属性,元素没有顺序且不允许重复

<list>元素:可以映射java.util.List接口的属性,有顺序,需要在集合属性对应的表中用一个额外的索引保存每个元素的位置

<bag> <idbag>元素:可以映射java.util.Collection接口的属性,元素可重复,但不保存顺序

<map>元素:可以映射java.util.Map接口的属性,元素以键/值对的形式保存,也是无序的

<primitive-array> <array>:可以映射数组元素。

2. 这几个高级映射的主要代码

<set>元素private Set<String> hobbies;<set name=“hobbies” table=“student_hobby”><key column=“student_id”/><element type=“string” column=“hobby_name” not-null=“true”/></set>这里要注意的是:这里所说的set标签不同于前面介绍过的关系映射中的set标签,不知大家注意到没有,这里多了一个element标签但是没有关系类型的标签了;element标签的属性not-null=”true”是不允许字段为空的意思<list>元素private List<String> hobbies;<list name=“hobbies” table=“student_hobby”><key column=“student_id”/><list-index column=“posistion”/><element type=“string” column=“hobby_name” not-null=“true”/></list>这里要注意的是:list标签与set的标签的映射文件写法看似一样,其实不一样,有一点不同的是,list标签多了list-index标签,这个标签的作用是给表添加一个索引位置,为什么会有多一个这个标签呢!?其实是由list与set的不同决定的,li。st是 有顺序的所以要有一个索引位置来唯一标识,而set没有。<bag>元素private Collection<String> hobbies;<bag name=“hobbies” table=“student_hobby”><key column=“student_id”/><element type=“string” column=“hobby_name” not-null=“true”/></bag>这里要注意的是:bag标签的作用是达到与list标签同样的功能,但是不多余的产生索引位置的标识。bag标签对应的持久化类中的属性类型是Collection集合类型,即是set、list的父接口,固后者达到的功能前者都能达到。bag主要作用是:想使数据又顺序,但是又不想要那个产生的标识位置的字段。<map>元素private Map<Long String> hobbies;<map name=“hobbies” table=“student_hobby”><key column=“student_id”><map-key column=“hobby_id” type=“long”/><element type=“string” column=“hobby_name” not-null=“true”/></map> 3.  案例分析以上是各个xxx.hbm.xml的部分代码,也是核心代码,下面列举一下测试代码。SetTest.Javapackage com.hbsi.set;import java.util.HashSet;import java.util.Set;import org.hibernate.Session;import org.junit.Test;import com.hbsi.utils.HibernateSessionFactory;public class SetTest {@Testpublic void add(){Session session = HibernateSessionFactory.getSession();session.beginTransaction();Person p = new Person();p.setName("keven");Set<String> hobbies = new HashSet<String>();hobbies.add("sing");hobbies.add("dance");p.setHobbies(hobbies);session.save(p);session.getTransaction().commit();HibernateSessionFactory.closeSession();}}ListTest.javapackage com.hbsi.list;import java.util.ArrayList;import java.util.List;import org.hibernate.Session;import org.junit.Test;import com.hbsi.utils.HibernateSessionFactory;public class ListTest {@Testpublic void add(){Session session = HibernateSessionFactory.getSession();session.beginTransaction();Person p = new Person();p.setName("join");List<String> hobbies = new ArrayList<String>();hobbies.add("backetball");hobbies.add("football");p.setHobbies(hobbies);session.save(p);session.getTransaction().commit();HibernateSessionFactory.closeSession();}}BagTest.javapackage com.hbsi.bag;import java.util.ArrayList;import java.util.List;import org.hibernate.Session;import org.junit.Test;import com.hbsi.utils.HibernateSessionFactory;public class BagTest {@Testpublic void add(){Session session = HibernateSessionFactory.getSession();session.beginTransaction();Person p = new Person();p.setName("keven");List<String> hobbies = new ArrayList<String>();hobbies.add("sing");hobbies.add("dance");p.setHobbies(hobbies);session.save(p);session.getTransaction().commit();HibernateSessionFactory.closeSession();}}MapTest.javapackage com.hbsi.map;import java.util.HashMap;import java.util.Map;import org.hibernate.Session;import org.junit.Test;import com.hbsi.utils.HibernateSessionFactory;public class MapTest {@Testpublic void add(){Session session = HibernateSessionFactory.getSession();session.beginTransaction();Person p = new Person();p.setName("keven");Map<Integer,String> hobbies = new HashMap<Integer,String>();hobbies.put(1,"sing");hobbies.put(2,"dance");p.setHobbies(hobbies);session.save(p);session.getTransaction().commit();HibernateSessionFactory.closeSession();}}

转载于:https://www.cnblogs.com/zgl521/archive/2012/12/24/3057675.html

hibernate 高级映射 --张国亮总结第一季相关推荐

  1. 华侨大学计算机学院保研情况,华侨大学计算机科学与技术学院导师简介:张国亮...

    热门关键词:华侨大学计算机科学与技术学院导师华侨大学张国亮硕士研究生导师 个人概况: 张国亮:工学博士,硕士生导师/讲师.哈尔滨工业大学机械电子工程专业,2005-2010年在哈尔滨工业大学机器人技术 ...

  2. Hibernate高级映射技术(二)自定义数据类型StringMap (转载用于收藏)

    转载于:http://ajava.org/course/open/14004.html 核心提示:上一篇文章介绍了数据库中用;分隔的字段的一种方便的高级映射自定义数据类型StringList.这次是我 ...

  3. Hibernate高级映射技术(二)自定义数据类型StringMap(转)

    核心提示:上一篇文章介绍了数据库中用;分隔的字段的一种方便的高级映射自定义数据类型StringList.这次是我做的另一种自定义数据类型StringMap. 在商品和属性的对应关系中,一个商品对应多个 ...

  4. Hibernate高级映射技术(一)自定义数据类型StringList (转载用于收藏)

    转载于:http://ajava.org/course/open/14003.html 核心提示:我们在设计数据库时往往会遇到例如用户的多个手机号码的一对多问题,如果设计一个T_MOBILE表保存未免 ...

  5. Hibernate高级映射技术(一)自定义数据类型StringList (转)

    核心提示:我们在设计数据库时往往会遇到例如用户的多个手机号码的一对多问题,如果设计一个T_MOBILE表保存未免太大动干戈而且影响速度,所以如果没有严格的要求,一般情况我们在T_USER表里设计一个 ...

  6. 超炫计算机课件ppt,5分钟打造高级炫酷的PPT系列第一季-斧子演示视频教程

    第1章 开天需有利斧 1小时36分钟10节 1-1 先看看效果 这是用斧子演示编程的一个演示文档,并且是利用它自己的导出视频功能导出的演示视频. [01:20] 开始学习 1-2 斧子演示的下载.安装 ...

  7. Hibernate之深入Hibernate的映射文件

    这周周末 要把hibernate的映射文件搞定 .. 1.映射文件的主结构 主要结构  :根元素为<hibernate-mapping ></hibernate-mapping> ...

  8. 阿里高级技术专家张建飞:深度剖析领域模型vs数据模型的用法

    张建飞 frank 读完需要 21 分钟 速读仅需 7 分钟 阿里巴巴高级技术专家,著有图书<代码精进之路 从码农到工匠>,维护公众号<从码农到工匠> ID:craftsman ...

  9. Mybatis(四) 高级映射,一对一,一对多,多对多映射

    天气甚好,怎能不学习? 一.单向和双向 包括一对一,一对多,多对多这三种情况,但是每一种又分为单向和双向,在hibernate中我们就详细解析过这单向和双向是啥意思,在这里,在重复一遍,就拿一对多这种 ...

最新文章

  1. Ubuntu14.04下切换系统自带的Python和Anaconda 下的Python
  2. SolrJ商品搜索实现
  3. jfinal上传文件
  4. 分治法求数组最大值 c语言,使用分治法求最大子数组的下标。
  5. ThoughtWorks洞见领域驱动设计思维导图笔记
  6. Spring-IOC
  7. oracle数据库使用hint来让模糊查询走索引
  8. 解决在servlet中输出html的中文输出为问号的问题
  9. Qt 内嵌浏览器几种办法
  10. Unity 粒子特效
  11. js代码编写新年倒计时
  12. 医院信息化建设,该何去何从?
  13. matlab矩阵的白化,白化原理及Matlab实现
  14. PyQt5_pyqtgraph股票MACD指标
  15. C++流操作练习:统计一篇英文(The_Holy_Bible.txt)文章中出现的单词和词频 并组成字典
  16. 盘点2017全球最优秀的6款免费远程桌面软件
  17. 梦想起航商务工作PPT模板
  18. antd form 表单数据校验·记
  19. Axure RP9——【图片放大预览效果】
  20. 编程训练-求矩阵乘积

热门文章

  1. 1的个数 itoa函数使用
  2. golang中的切片
  3. shell实例第20讲:linux shell date的用法
  4. Oracle中 的 DBMS_CRYPTO加密包
  5. python二:注释
  6. 构建之法之单元测试及设计流程
  7. 不仅仅是商务旗舰,金立M2017的拍照实力同样给力
  8. 一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
  9. CString、std::string格式化字符串
  10. OCCI读写Oracle Spatial的SDO_Geometry