Hibernate 系列教程10-组成关系
组成关系
在一个员工模型里面需要存入
员工公司所在地址的城市,街道
员工籍贯所在的城市,街道,
此时可以抽取城市,街道变成一个模型即是组成关系
Employee
public class Employee {
private Long id;
private String name;
// 公司的地址
private Address comAddress;
// 籍贯所在地
private Address homeAddress;
Employee.hbm.xml
<class name="Employee" table="t_employee">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<!-- 组成关系:以对象的方式来解决重复的信息 -->
<!-- 公司所在的地址 -->
<!-- class必须配置为全类名 -->
<component name="comAddress" class="Address">
<!-- property:name必须配置成java的属性,column配置成数据库的字段,而且不能重复 -->
<property name="city" column="com_city" />
<property name="street" column="com_street" />
</component>
<!-- 籍贯所在的地址 -->
<component name="homeAddress" class="Address">
<property name="city" column="home_city" />
<property name="street" column="home_street" />
</component>
</class>
MainTest
public class MainTest {
Session session = null;
@Before
public void save() {
session = HibernateUtils.INSTANCE.getSession();
session.beginTransaction();
Address comAddress = new Address("bj", "st1");
Address homeAddress = new Address("sh", "st2");
Employee employee = new Employee("user");
employee.setComAddress(comAddress);
employee.setHomeAddress(homeAddress);
session.save(employee);
}
@Test
public void get() throws Exception {
Employee employee = (Employee) session.get(Employee.class, 1L);
System.out.println(employee);
System.out.println(employee.getComAddress());
System.out.println(employee.getHomeAddress());
}
@After
public void colse() {
session.getTransaction().commit();
session.close();
}
}
源码地址
https://github.com/je-ge/hibernate
如果觉得我的文章对您有帮助,请予以打赏。您的支持将鼓励我继续创作!谢谢!
Hibernate 系列教程10-组成关系的更多相关文章
- Hibernate 系列教程16-二级缓存
pom.xml <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate- ...
- Hibernate 系列教程7-双向一对一
双向一对一 一对一主要用在 一个一方需要的信息比较少,比如注册的登录信息 另一个一方存储的信息比较多,比如注册之后用户填写的详细信息 实现方式常用的主要有2种: java模型都是一样,其中一个映射文件 ...
- Hibernate 系列教程6-双向多对多
双向多对多inverse配置 如果关系两边都使用默认inverse=false配置,表示关系两边都可以管理中间表的数据 关系其中一边设置inverse=true配置,表示自己放弃管理中间表关系,由对方 ...
- Hibernate 系列教程5-双向多对一
主要讲解inverse和cascade的用法 cascade定义的是关系两端对象到对象的级联关系: 而inverse定义的是关系和对象的级联关系(管理外键的值). inverse 属性默认是false ...
- HTML5游戏开发系列教程10(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-10/ 最后我们将继续使用canvas来进行HTML5游戏开发系列 ...
- NetworkX系列教程(10)-算法之五:广度优先与深度优先
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- Hibernate 系列教程17-查询缓存
在二级缓存配置成功的基础上进行查询缓存配置 Product public class Product { private Long id; private String name; Product.h ...
- Hibernate 系列教程15-一级缓存
Product public class Product { private Long id; private String name; Product.hbm.xml <class name= ...
- Hibernate 系列教程14-继承-PerTable策略
Employee public class Employee { private Long id; private String name; HourlyEmployee public class H ...
随机推荐
- WEB前端组件思想【日历】
DEMO2: 思路:首先获取元素节点元素--->根据点击事件隐藏显示元素--->建立showdate方法(判断12月 则右边年份+1,月份1 )--->还要设置btn开关 防止多次重 ...
- 浙大 pat 1024题解
1024. Palindromic Number (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A ...
- cmd alias 自定义命令
简短步骤:1.关闭所有在运行的CMD窗口2.创建文件C:\cmd-alias.bat,包含以下内容:[python] view plain copydoskey sayhello=echo Hello ...
- 笨方法学python--参数,解包,变量
1 cmd中执行 python ex11.py, ex11.py部分也是所谓的"参数". 2 from sys import argv script, first, second, ...
- HADOOP与ORACLE关联
安装Oracle和Oracle大数据连接器/OLH,尝试把HDFS中的数据文件装载到Oracle中的表 http://f.dataguru.cn/thread-460110-1-1.html 文档讲述 ...
- js导入插件注意事项.txt
网上收集的答案如下:==============================================1)确认js真的被引用到2)确认js引用顺序没问题3)确认js代码里的括号等都匹配,不会 ...
- HDU 5348 MZL's endless loop
乱搞题...第一直觉是混合图的欧拉通路,但是感觉并没有多大关系.最终AC的做法是不断的寻找欧拉通路,然后给边标号.所有边访问了一遍,所有点访问了一遍,效率是o(n+m).不存在-1的情况. #incl ...
- java类的初始化
转载:http://blog.csdn.net/moreevan/article/details/6968718 我们知道一个类(class)要被使用必须经过装载,连接,初始化这样的过程.下面先对这三 ...
- WebService测试方案
1.WebService简介 WebService是一种革命性的分布式计算技术,本质上就是网络上可用的API,可以直接在网络环境调用的方法. WebService常用的框架有axis.xfire.cx ...
- json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)
调用接口,无非也就是打开链接 读取流 将结果以流的形式输出 将查询结果以json返回,无非就是将查询到的结果转换成jsonObject ================================ ...