Hibernate组件(Component)映射
组件(Component)映射
Component(组件)是一个被包含的对象,它作为值类型被持久化,而非一个被引用的实体。“component(组件)”这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。在hibernate中可借助Component节点的定义,完成对复杂数据表的细分。在hibernate语义中,将某个实例对象中的一个逻辑组成称为Component(组件)。Component(组件)与实体对象的根本差别就在于Componet(组件)没有标识符(identity),它作为一个逻辑组成完全从属于实体对象。
还是以我第一个hibernate实例为例来说明组件映射:
User实体类如下:
- package eg;
- public class User {
- private int id;
- private Name name;//Name是另一个类
- private Date birthday;
- //setter和getter方法省略
- }
Name类如下:
- package eg;
- public class Name {
- private String firstName;
- private String lastName;
- //省略setter和getter方法
- }
User.hbm.xml映射文件如下:
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="eg.User" >
- <id name="id" >
- <generator class="native" />
- </id>
- <component name="name">
- <property name="firstName" column="first_name" />
- <property name="lastName" column="last_name" />
- </component>
- <property name="birthday" />
- </class>
- </hibernate-mapping
测试类如下:
- public class TestUser {
- @Test
- public void test1(){
- Configuration config = new Configuration();
- config.configure();
- SessionFactory factory = config.buildSessionFactory();
- Session session = factory.openSession();
- Transaction tran = session.beginTransaction();
- User user = new User();
- Name name = new Name();
- name.setFirstName("long");
- name.setLastName("xiao");
- user.setName(name);
- user.setBirthday(new Date());
- session.save(user);
- tran.commit();
- session.close();
- }
- }
测试程序运行后,数据库中生成了user表,创建语句如下:
- DROP TABLE IF EXISTS `test`.`user`;
- CREATE TABLE `test`.`user` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `first_name` varchar(255) DEFAULT NULL,
- `last_name` varchar(255) DEFAULT NULL,
- `birthday` datetime DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
数据库中记录如下所示:
+----+------------+-----------+----------+
| id | first_name | last_name | birthday |
+----+------------+-----------+----------+
| 1 | long | xiao | NULL |
+----+------------+-----------+----------+
1 row in set (0.00 sec)
Hibernate组件(Component)映射相关推荐
- Hibernate 、多表关联映射-组件关联映射(component)
组件关联映射可以将一些简小的数据与主题放在一个表中,例如firstName 和LastName这两个结合在一起可以组成一个名字,但是再分别将这两个再建一个表就不太合适了,这个时候可以用到组件关联映射: ...
- 初识Hibernate之关联映射(一)
上篇文章我们对持久化对象进行的学习,了解了它的三种不同的状态并通过它完成对数据库的映射操作.但这都是基于单张表的操作,如果两张或者两张以上的表之间存在某种关联,我们又该如何利用持久化对象进行操作呢?本 ...
- Hibernate - 对象关系映射文件(*.hbm.xml)详解
对象关系映射文件,即POJO 类和数据库的映射文件*.hbm.xml(映射文件的扩展名为 .hbm.xml). POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据 ...
- Hibernate多对多映射 - 连接表
Hibernate多对多映射 - 连接表 今天我们将使用XML和注释配置来研究Hibernate多对多映射.之前我们看过如何在Hibernate中实现One To One和One To Many映射. ...
- Hibernate之继承映射
Hibernate的继承映射可以理解为两个持久化类之间的继承关系 例如老师和人之间的关系 持久化类 Person类 public class Person { private Inte ...
- Hibernate 主键维护策略和hibernate 常见的映射类型
先配置Product.hbm.xml,最重要是在这个文件中 <?xml version="1.0" encoding="UTF-8"?> <! ...
- 三十七、深入Vue.js组件Component(下篇)
@Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- element vue 获取select 的label_Vue动态组件component的深度使用
背景介绍 最近在封装一些基于Vue+ElementUI的组件,将一些实际项目中常用的,有一定规律的业务进行抽象总结,开发出相应的Vue组件. 组件封装 首先想到的就是Form组件,在Element U ...
- Hibernate 实体关联关系映射----总结
http://lavasoft.blog.51cto.com/62575/39398 Hibernate 实体关联关系映射----总结 花了三天的业余时间,终于写完了Hibernate关联关系映射的所 ...
最新文章
- window.opener.document.getElementById(“a”)用标准的Jquery 语言怎么写
- cellpadding,cellspacing都是废弃的属性了,早已不推荐使用,最新的html5里已经彻底去掉了这些表现型的属性。
- uliweb新教程--多人博客系统开发
- python打包工具 --- pyinstaller
- 【笔记】MATLAB中的图形(2)
- java过去配置文件的值_java对.properties配置文件操作
- mysql查找无根节点sql_SQL 双亲节点查找所有子节点的实现方法
- em算法 实例 正态分布_Petuum提出序列生成学习算法通用框架
- jeecg社区第11期导师架构学习班开始报名了
- PyTorch 1.0 中文官方教程:使用ONNX将模型从PyTorch传输到Caffe2和移动端
- 三星Galaxy Note 10最新消息:将取消所有实体按键
- 【SAS】REG过程详解
- AOP jdk动态代理
- easymock参数_EasyMock捕获参数
- Nginx防盗链、访问控制、解析php相关配置、Nginx代理
- dede产生.php,怎么加快织梦dedeCMS内容生成速度
- Adaptive让 Spark SQL 更高效更智能
- STM32_HAL_SPI_ADS1256调试记录
- php屏蔽微信网页投诉按钮,屏蔽微信(QQ)内置浏览器菜单中的投诉按钮
- 请领导过目文件怎么说_【文件夹】英文怎么说?
热门文章
- hdu4400 BFS+STL
- hdu4496并查集的删边操作
- 【数字信号处理】相关函数 ( 相关系数与相关函数 | 相关函数定义 )
- 【五线谱】变音记号 ( 升号 # | 降号 b | 重升号 x | 重降号 bb )
- 【Android 逆向】Android 逆向通用工具开发 ( 静态库项目中的网络操作核心类 CNetwork 分析 )
- 【Android 插件化】使用插件化引擎对应用进行重打包的恶意软件特征 ( 检测困难 | 成本低 | 恶意插件可更换 | 容易传播 )
- 【Android 插件化】静态分析应用 APK 安装包是否使用了插件化引擎 ( 虚拟化引擎运行特点 | 恶意软件特点 )
- 【Android 安全】DEX 加密 ( Java 工具开发 | 生成 dex 文件 | Java 命令行执行 )
- (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)...
- layoutSubviews何时被调用