>>分享孙卫琴的Java技术专稿和著作 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 14950 个阅读者 刷新本主题
 * 贴子主题:  【持久化专题】映射Bag包(值类型的集合) 回复文章 点赞(0)  收藏  
作者:sunweiqin    发表时间:2021-05-05 06:14:06     消息  查看  搜索  好友  邮件  复制  引用

本文参考《精通JPA与Hibernate:Java对象持久化技术详解》,作者:孙卫琴,清华大学出版社出版
  
Bag集合中的对象不按特定方式排序,但是允许有重复对象。在Java集合API中并没有提供Bag接口,Hibernate允许在持久化类中用List来模拟Bag的行为。假定Customer对象的images集合中允许存放重复的照片文件名,可以把images属性定义为List类型:    
private List<String> images=new ArrayList<String>();

  在数据库中定义了一张IMAGES表,它的CUSTOMER_ID字段为参照CUSTOMERS表的外键,由于Customer对象允许有重复的照片文件名,因此应该在IMAGES表中定义一个代理主键ID。

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

     以下是IMAGES表的DDL定义:    

create table IMAGES(
   ID bigint not null,
   CUSTOMER_ID bigint not null,
   FILENAME varchar(15) not null,
   primary key (ID),
   foreign key (CUSTOMER_ID) references CUSTOMERS(ID)
);

  在Customer类中,映射Customer类的images属性的代码如下:    

@ElementCollection
@CollectionTable(name="IMAGES",
         joinColumns=@JoinColumn(name="CUSTOMER_ID"))
@Column(name="FILENAME")
@CollectionId(columns=@Column(name="ID"),
                type=@Type(type="long"),
                generator="increment")  
private List<String> images=new ArrayList<String>();

  @CollectionId注解来自于org.hibernate.annotations包,指定IMAGES表的主键为ID,它的映射类型为“long”,它采用“increment”标识符生成策略。
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小





程序猿的技术大观园:www.javathinker.net





[这个贴子最后由 admin 在 2021-10-09 10:47:28 重新编辑]
  Java面向对象编程-->输入与输出(下)
  JavaWeb开发-->JavaWeb应用入门(Ⅰ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->组合(Composition)API
  Vue3开发-->Vue CLI脚手架工具
  【Vue.js技术专题】Vue组件的命名规则
  【Vue.js技术专题】CSS中DOM元素的过渡模式
  【Vue.js技术专题】分割setup()函数
  【Vue.js技术专题】插槽slot的基本用法
  【Vue.js技术专题】自定义指令范例:v-drag指令
  【Spring Cloud Alibaba专题】Dubbo框架中提供者回调消费者
  【Spring专题】控制器对象的生命周期
  【Spring专题】用AOP和SLF4J输出日志的范例
  【Spring专题】Spring框架的数据验证机制
  从《精通Spring》和《精通Vue.js》的写作分享学习新技术的经...
  【持久化专题】JPA的事件处理API的用法
  【Java网络编程专题】用Apache FTPClient在FTP服务器上创建目...
  【JavaWeb专题】在Servlet中利用Apache开源类库实现文件上传
  【Java基础编程专题】定时器Timer类的用法
  IT培训课、视频教程和书本之PK
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。