这篇讲解 集合映射之List映射

1.通常对于集合,在hibernate中的处理都是使用set来完成。但是hibernate也提供了对于其他几种集合的映射。

在这里实现List的映射,List是有序的集合,所以需要在表中有一列数据用来表示顺序。

2.集合映射一般存在于一对多中,使用案例是 category 和 book

3.类结构

Book.java

public class Book implements Serializable{private int id;private String name;private String author;private double price;private Date pubDate;public Book() {}public Book(String name, String author, double price, Date pubDate) {super();this.name = name;this.author = author;this.price = price;this.pubDate = pubDate;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Date getPubDate() {return pubDate;}public void setPubDate(Date pubDate) {this.pubDate = pubDate;}@Overridepublic String toString() {return "Book [id=" + id + ", name=" + name + ", author=" + author + ", price=" + price + ", pubDate=" + pubDate+ "]";}
}

Category.java

public class Category implements Serializable{private int id;private String name;private List<Book> books = new ArrayList<>();public Category() {}public Category(String name) {super();this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Book> getBooks() {return books;}public void setBooks(List<Book> books) {this.books = books;}
}

4.映射文件

Book.hbm.xml

<hibernate-mapping package="cn.sxt.pojo"><class name="Book" table="t_book"><id name="id"><generator class="native"></generator></id><property name="name"/><property name="author"/><property name="price"/><property name="pubDate"/></class>
</hibernate-mapping>

Category.hbm.xml

<hibernate-mapping package="cn.sxt.pojo"><class name="Category" table="t_category"><id name="id"><generator class="native"></generator></id><property name="name"/><!-- 一对多的关联映射 --><list name="books"><key column="cid"></key><!-- idx有hibernate来进行维护 --><index column="idx"/><one-to-many class="Book"/></list></class>
</hibernate-mapping>

5.测试

public class HibernateTest {/*** 生成数据库表的工具方法* */@Testpublic void testCreateDB(){Configuration cfg = new Configuration().configure();SchemaExport se = new SchemaExport(cfg);//第一个参数  是否打印sql脚本//第二个参数 是否将脚本导出到数据库中执行se.create(true, true);}/*** 初始化表数据* 使用一对多的方式来保存数据,会执行update语句来更新外键* 使得效率会比多对一的方式效率低*/@Testpublic void testInit(){Session session = null;Transaction tx = null;try {session = HibernateUtil.getSession();tx = session.beginTransaction();Category c1 = new Category("计算机类");Category c2 = new Category("文学");Category c3 = new Category("历史");SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Book b1 = new Book("java","sun",30,df.parse("1995-05-23"));Book b2 = new Book("struts","apache",40,df.parse("2006-09-12"));Book b3 = new Book("明朝那些事儿","当年明月",70,df.parse("2008-05-23"));Book b4 = new Book("水浒传","老撕",20,df.parse("1985-05-23"));//设置关系
            c1.getBooks().add(b1);c1.getBooks().add(b2);c2.getBooks().add(b4);c3.getBooks().add(b3);session.save(c1);session.save(c2);session.save(c3);session.save(b1);session.save(b2);session.save(b3);session.save(b4);tx.commit();} catch (Exception e) {if(tx!=null)tx.rollback();}finally {HibernateUtil.close();}}/*** 在查询多的一端数据时可以获取一的一端的数据*/@Testpublic void testGetData(){Session session = HibernateUtil.getSession();Category c1 = (Category)session.get(Category.class, 1);System.out.println(c1.getId()+"----"+c1.getName());System.out.println("-----------------");for(Book book:c1.getBooks()){System.out.println(book);}HibernateUtil.close();}
}

转载于:https://www.cnblogs.com/Vincent-yuan/p/11210089.html

java之hiberante之集合映射之list映射相关推荐

  1. 【java笔记】有序集合SortedSet和有序映射SortedMap的使用

    首先要明确的一点是java中原生的Set和Map是不具备排序能力的,即在遍历时是无顺序的.而 SortedSet和SortedMap接口提供了Set和Map的排序功能. 注意两者是接口. 1. Sor ...

  2. Java学习day096 并发(六)(线程安全的集合:高效的映射、集和队列、映射条目的原子更新、对并发散列映射的批操作、并发集视图、写数组的拷贝、并行数组算法、较早的线程安全集合)

    使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day096   并发(六)(线程安全的集合:高效的映射.集和队列.映射条目的原子更新.对并发散列映 ...

  3. Java 8中处理集合的优雅姿势——Stream

    在Java中,集合和数组是我们经常会用到的数据结构,需要经常对他们做增.删.改.查.聚合.统计.过滤等操作.相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便 ...

  4. Java核心技术点之集合框架

    1. 概述     Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...

  5. 根据key删除Map集合中的key-value映射

    一:在遍历Map时是不可以删除key-value映射的,如果根据key删除,如下: public static void main(String[] args) {Map<String,Obje ...

  6. Java学习笔记3——集合框架

    文章目录 1 集合的概念 2 Collection体系集合 Collection父接口 3 List接口与实现类 List接口 List实现类 ArrayList Vector LinkedList ...

  7. Java-杂项:Java数组Array和集合List、Set、Map

    ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...

  8. Java 8 中处理集合的优雅姿势——Stream

    作者 | Hollis 责编 | 胡巍巍 本文经授权转载自Hollis(ID:hollischuang) 程序员转行学什么语言? https://edu.csdn.net/topic/ai30?utm ...

  9. JAVA笔记- JAVA集合类之HashMap集合

    1- Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同: Collection中的集合,元素是孤立存在的(理解为单身),向集 ...

最新文章

  1. puppet cert maintain
  2. sqldbx oracle mysql
  3. 2011年7月28日星期四精彩网语
  4. Spring5源码 - 11 Spring事件监听机制_源码篇
  5. 斯坦福大学深度学习与自然语言处理第二讲:词向量
  6. Java中怎样根据对象list的某对象的属性进行分组
  7. mysql5.6 线程池_[MySQL5.6] Percona Server 5.6.14的线程池浅析
  8. pycharm matplotlib 图片显示
  9. 2021牛客暑期多校训练营1
  10. java持久性与安全性_Java持久性锁定初学者指南
  11. 两台服务器安装redis集群_redis 集群搭建,小白也能搭三主三从的集群环境
  12. WCDMA,CDMA2000,TD_SCDMA
  13. 使控件大小随窗口变化
  14. Idea启动报错 Error:java: System Java Compiler was not found in classpath
  15. Web 攻击越发复杂,如何保证云上业务高可用性的同时系统不被入侵?| 专家谈...
  16. react native 项目使用 expo 二维码扫描失败
  17. YUV和RGB格式分析
  18. 《概率论与数理统计.宋浩》前七章笔记汇总
  19. 京东云服务器——免费体验6个月
  20. java 鸭子类_Python:多态、协议和鸭子类型

热门文章

  1. 八月面试题(2) 2018-9-6
  2. 图解HTTP学习记录(一)
  3. RHEL5中YUM命令解决RPM包依赖性
  4. 初学Python(一)——数据类型
  5. [并发编程]并发编程第二篇:利用并发编程,实现计算大量数据的和
  6. oracle clob
  7. Type of data in energy dashboard
  8. cool venn diagram
  9. how you can do to make girls more close to you?
  10. excel转latex,markdown,html表格的神仙网站!科研必备!