组件映射和集合映射

18、集合与实体关联映射 本文详细介绍了在实际系统开发中集合与实体关联映射的相关内容,包括集合组件的相等性处理、不同集合类型(如Set、Bag、Map)的映射方式以及实体之间的关联映射策略。同时探讨了双向关联映射、性能优化方法以及合理选择集合类型的原则,旨在帮助开发者更好地处理数据映射问题,提高系统的效率和可维护性。 阅读详情

组件映射:

组件映射:

在实体类中:

private Set<String> hobbies;

在映射文件中:

<set name="hobbies" table="student_hobby">

    <key column="student_id"/>   用来指定外键列

    <element type="string" column="hobbies_name"></element> 用来指定元素

</set>

在配置文件中:

<mapping resource="com/hbsi/domain/Student.hbm.xml" />

在测试类中:

try{

           session=HibrnateUtil.getSession();

           tx=session.beginTransaction();

           Student s=new Student();

           s.setName("tom");

           Set<String> hobbies=new HashSet<String>();

           hobbies.add("football");

           hobbies.add("dance");

           s.setHobbies(hobbies);

           session.save(s);

           tx.commit();

       }finally{

           if(session!=null){

              session.close();

           }

       }

 

 

集合映射(set, list, array,bag, map)

·这些集合类都是Hibernate实现的类和JAVA中的集合类不完全一样,set,list,map分别和JAVA中的Set,List,Map接口对应,bag映射成JAVA的List;这些集合的使用和JAVA集合中对应的接口基本一致;在JAVA的实体类中集合只能定义成接口不能定义成具体类, 因为集合会在运行时被替换成Hibernate的实现。

·集合的简单使用原则:大部分情况下用set,需要保证集合中的顺序用list,想用java.util.List又不需要保证顺序用bag。

注:在类中运用的时候,均用接口。

一、             set集合映射:

在实体类中定义属性:

//private Set<String> hobbies;//爱好----集合对象

       在映射文件中:

       <set name="hobbies" table="student_hobby">

       <key column="student_id"/>    用来指定外键列

    <element type="string" column="hobbies_name"></element>   用来指定元素

</set>

       在配置文件中:

       <mapping resource="com/hbsi/domain/Student.hbm.xml" />

    在测试类中:

       try{

           session=HibrnateUtil.getSession();

           tx=session.beginTransaction();

           Student s=new Student();

           s.setName("tom");

           Set<String> hobbies=new HashSet<String>();

           hobbies.add("football");

           hobbies.add("dance");

           s.setHobbies(hobbies);

           session.save(s);

           tx.commit();

       }finally{

           if(session!=null){

              session.close();

           }

       }

二、   list映射:list集合类型在有些一对多关系中可能会很有用,例如,在论坛版面管理中,将会涉及到版面的上移/下移等操作,这就需要在版面集合中维护顺序,用list集合就可以很好地解决这个问题!

在实体类中定义属性:

private List<String> hobbies;

在映射文件中:

<list name="hobbies">

        <key column="student_id"/>

       <list-index column="order_index"/> 用来指定某一列维护添加顺序  

       <element type="string" column="hobbies_name"></element>

</list>

在配置文件中:

       <mapping resource="com/hbsi/domain/Student.hbm.xml" />

在测试类中:

session=HibrnateUtil.getSession();

           tx=session.beginTransaction();

           Student s=new Student();

           s.setName("tom");

           List<String> list=new ArrayList<String>();

           list.add("football");

           list.add("dance");

           s.setHobbies(list);

           session.save(s);

           tx.commit();

       }finally{

           if(session!=null){

              session.close();

           }

    }

注:list和set的区别:list集合有一个顺序的要求。

三、             bag映射

四、             map映射:

在实体类中:

private Map<Long,String>hobbies;

在映射文件中:

<map name="hobbies">

       <key column="student_id"/>

       <map-key type="long" column="name_key"/> <!-- 指定键值对中的键  -->

       <element type="string" column="hobbies_name"></element> <!-- 指定键值对中的值  -->

    </map>

    在配置文件中:

    <mapping resource="com/hbsi/domain/Student.hbm.xml" />

    在测试类中:

           session=HibrnateUtil.getSession();

           tx=session.beginTransaction();

           Student s=new Student();

           s.setName("tom");

           Map<Long,String> m=new HashMap<Long, String>();

           m.put(new Long(4),"dudu");

           m.put(new Long(5), "huhu");

           s.setHobbies(m);

           session.save(s);

           tx.commit();

       }finally{

           if(session!=null){

              session.close();

           }

       }

  注:map集合是键值对。

          

22、值类型集合映射详解 本文详细介绍了在数据处理和持久化过程中,如何使用 NHibernate 实现值类型集合的映射。涵盖了集合、包、列表、映射等不同集合类型的使用场景与实现方式,并探讨了排序集合与有序集合的区别及组件集合的映射方法。通过具体代码示例和数据库表结构说明,帮助开发者根据实际需求选择合适的映射策略,同时提供了性能优化、代码维护和异常处理等方面的建议。 阅读详情

相关推荐

spdk + fio测试nvme 设备的性能

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。这个jobfile是spdk中提供的例子。领取,关注我持续更新哦!2.7 jobfile的例子。

lingshengxiyou的博客 1088

Hibernate:组件属性和关联映射的区别

Hibernate:组件属性和关联映射的区别

VipMao的博客 2028

python批量生成CAD图纸

python批量生成CAD图纸

轩逸云的博客 1万+

Hibernate征途(五)之继承映射和组件映射

之所以把这两种映射放到一起说,是因为二者都是以复用为目的,减少了代码和配置量,这是相同点;二者之间的不同点类似继承和实现的区别:继承的类是一个事物的抽象,而实现的接口仅仅是功能的抽象。 继承映射 如上面所说,如下图:

李达 2050

LT9611EX芯片实战:如何用双端口MIPI转HDMI1.4打造高清播放器(附配置代码)

本文详细介绍了如何使用龙迅半导体的LT9611EX芯片实现双端口MIPI转HDMI1.4的高清播放器开发。内容涵盖芯片特性、硬件设计要点、寄存器配置技巧及完整代码实现,特别适合嵌入式视频处理应用,如机顶盒和便携式媒体播放器。

weixin_29256771的博客 322

从零开始学华为设备:手把手教你用ENSP搭建OSPF实验环境(附拓扑文件)

本文详细介绍了如何使用华为ENSP模拟器从零开始搭建OSPF多区域网络实验环境,包括拓扑规划、设备配置、OSPF参数优化及故障排查技巧。通过实战案例和配置示例,帮助网络工程师快速掌握华为设备的OSPF协议配置,提升企业网络环境中的实战能力。

weixin_29305313的博客 286

JAVA设计模式之原型模式(详解篇)

原型模式的定义 原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。调用者不需要知道任何创建细节,不调用构造函数。原型模式可分为简单克隆、深度克隆 原型模式的使用场景 类初始化消耗的资源较多; new 产生的一个对象需要非常繁琐的过程(数据准备、访问权限等) 构造函数比较复杂; 循环体中生产大量对象时。 ...

Mr.小强的博客 854

基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 1万+

Hibernate 映射实体类中的3种集合类型

一、Map:一组键值对应的无序,唯一的数据。 二、Set:一组无序,唯一的数据    该集合是用的最多的。 三、List:一组有序、不唯一的数据。     &lt;!-- List 集合的节点 --&gt; &lt;bag name="emps"&gt; &lt;key column="deptno"/&gt; &lt;one-to-many class="org.entity...

· · 441

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 171

model实体类里面有list集合类里面又嵌套list集合类,要用list,adpter进行对应还要...

如 List<OrderListProductDetModel> productDet;package com.jiawabang.Model;import java.util.List;public class OrderListModel {/** * title : 首页列表 * data1 : null * data : {"page":[{"confirmflag":1,"assi

xiyangyang8110的博客 8906

Fiori Elements 的 Adapting the UI: Analytical List Page 全解析与实战

摘要:本文详细介绍了如何通过SAP Fiori elements的UI Adaptation功能对Analytical List Page(ALP)进行细粒度适配。重点讲解了页头过滤区、图表区域、表格区域等关键组件的可配置属性,包括过滤区折叠/固定、图表类型限制、表格滚动阈值等实用功能。文章强调这些适配均可通过可视化工具完成,无需修改业务代码,并提供了典型场景的实践清单。适用于SAP Fiori elements for OData V2项目,建议配合SAP Fiori tools的Adaptation E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 436

Hibernate_映射简单集合类型和组件集合类型

Hibernate_映射简单集合类型和组件集合类型(组合关系中, 从对象可用String 代替或者可以做成组件), 映射demo如下: 另外, 介绍一下Hibernate 中,各种集合如何映射. Set 集合:

qq_31155349的博客 363

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

hibernate 映射组件 和 使用类集合,映射其他的表

hibernate 映射组件 和 使用类集合,映射其他的表

qq_33291307的博客 348

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Hibernate之映射值类型集合(组件的集合之set)

Hibernate之映射值类型集合(组件的集合之set)

fhd001的专栏 640

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NHibernate3剖析:Mapping篇之集合映射基础(3):List映射

系列引入 NHibernate3.0剖析系列分别从Configuration篇、Mapping篇、Query篇、Session策略篇、应用篇等方面全面揭示NHibernate3.0新特性和应用及其各种应用程序的集成,基于NHibernte3.0版本。如果你还不熟悉NHibernate,可以快速阅读NHibernate之旅系列文章导航系列入门,如果你已经在用NHibernate了,那么请跟上N

u013948187的专栏 1071

组件映射

组件映射 Hibernate建议在进行领域模型时要细粒度一些,简单的说,就是类比表多,这种映射方式就是组建映射 组件类是值类型,既它没有对象标识符属性,在数据库中也没有对应的表,它只是隶属于另一个持久化类的实例 值类型对象是指它对应的类没有对象标识符属性,只能作为一个持久化类的属性使用   当组件的属性已经不能和表中的字段简单的对应时使用   组建映射的应用有三种情况: 1、 把组

548

hibernate详解(三)----->>组件映射(一)

       Hibernate建议在进行领域模型建模时要细粒度一些,简单地说,就是类要比表多,这种映射方式就是组件(component)映射。     组件类是值类型的,即它没有对象标识符属性,在数据库中也没有对应的表,它只隶属于另一个持久化类的实例。它的数据被嵌入到所隶属的持久化实例对应的数据库表的记录中。     组件映射的应用有三种常见情况:把组件类作为持久化类的单个属性来使用、把组件类...

yuancandy的专栏 150

集合映射与级联操作

1、组件映射 概念:关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要之久保存的。 当person中有一个简单类Name时候,它不够作为一个实体,而是一个类,想把它存到一张DB表里。 直接在配置文件中配置Name的类与属性,Name无映射文件 2、集合映射(set、map、list) Set  没有元素添加的顺序,从而没有下标,在其中没

Java方向程序员_张帅鹏 1194

映射值类型集合

映射set集合          set集合存放不重复的数据。 class A{//存放图片,图片名不能重复,没有图片类 private Set images=new HashSet(); } image表 A_id imagename 映射Bag包        Bag集合中不按特定方式排序,当允许有重复对象。Java中没有Bag接口,所以用List模拟。 class A{//存

小魏的博客 484

Hibernate映射组件(对象)、组件集合属性

组件映射持久化类的属性可能是一个对象,现在又一个Person类,如下:@Entity @Table(name = "person_inf") public class Person_obj { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private int age;

laomei 695

心得9-hibernate 高级映射之组件映射

1.  组件映射概述     组件类是值类型的,它没有对象标识符属性,在数据库中没有对应的表,它只隶属于另一个持久化类的实例。   把组件类作为持久化类的单个属性来使用   把组件类作为持久化类的集合属性来使用 2.组件映射(User-Name) 关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要永久保存的。

ykblog.github.io 1504

Hibernate 组件映射---> 张国亮总结第三季

1. 组件映射概述 组件类是值类型的,它没有对象标识符属性,在数据库中没有对应的表,它只隶属于另一个持久化类的实例。 把组件类作为持久化类的单个属性来使用 把组件类作为持久化类的集合属性来使用 2.组件映射(User-Name) 关联的属性是个复杂类型的持久化类,但不是实体即:数据库中没有表与该属性对应,但该类的属性要永久保存的。 &...

diaoyinji6441的博客 130

Hibernate组件映射

组件Components 除了粗粒度的对象模型设计(一个表映射成一个持久化类)之外,还可以采用细粒度的对象模型,把一个表的映射成两个或者多个类。 被细化出来的类,可以称为组件(Component) 组件映射 组件映射的单向关联 组件映射的双向关联 组件集合映射  使用组件集合,可以让组件对象的集合依附于一个持久化对象上   本来说自己写的,网上看了看资料太全面了  就收集整理...

sweetbox1519的专栏 191
上一篇: 各种关联映射
下一篇: 继承映射
ping159
博客等级 码龄15年 6粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值