hibernate一对一主键单向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接。
本系列将介绍Hibernate中主要的几种关联映射
Hibernate一对一主键单向关联
Hibernate一对一主键双向关联
Hibernate一对一外键单向关联
Hibernate一对一外键双向关联
Hibernate多对一单向关联
Hibernate多对一双向关联
Hibernate多对多关联
代码都写有注释,主要包括(核心配置文件,实体映射文件,实体类,测试类,数据库)主要操作有增删改查。
本篇主要介绍Hibernate一对一主键单向关联:
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置数据库连接驱动类 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 配置数据库连接字符串 --> <property name="connection.url"><![CDATA[jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8]]></property> <!-- 配置数据库连接用户名 --> <property name="connection.username">root</property> <!-- 配置数据库连接密码 --> <property name="connection.password">123456</property> <!-- 配置数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 配置数据库表生成策略 --> <!--<property name="hibernate.hbm2ddl.auto">update</property> --> <!-- 配置是否打印显示SQL语句 --> <property name="show_sql">true</property> <!-- 配置是否格式化显示SQL语句 --> <property name="format_sql">true</property> <!-- 配置hibernate是否自动提交事务 --> <!--<property name="hibernate.connection.autocommit">true</property> --> <!-- 配置实体类对应的映射文件 --> <!-- 一对一主键单向关联 --> <mapping resource="com/great/entity3/People.hbm.xml"></mapping> <mapping resource="com/great/entity3/IdCard.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
People.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping package="com.great.entity3"> <!-- 配置实体类与数据库表的映射关系 --> <class name="com.great.entity3.People" table="people"> <!-- 配置主键映射关系 --> <id name="id" column="id" type="int"> <!-- 配置主键生成策略 --> <generator class="foreign"> <param name="property">idCard</param> </generator> </id> <!-- 配置属性和表字段映射关系 --> <property name="pName" column="pName" type="string"></property> <one-to-one name="idCard" constrained="true" cascade="all" /> </class> </hibernate-mapping>
IdCard.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 package="com.great.entity3"> <class name="IdCard" table="idcard"> <id name="id" column="id" type="int"> <generator class="native"> </generator> </id> <!-- 配置属性和表字段映射关系 --> <property name="CardCode" column="cardCode" type="string"></property> </class> </hibernate-mapping>
People.java
package com.great.entity3; public class People { // 一对一主键单向关联 private int id; private String pName; private IdCard idCard; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getpName() { return pName; } public void setpName(String pName) { this.pName = pName; } public IdCard getIdCard() { return idCard; } public void setIdCard(IdCard idCard) { this.idCard = idCard; } }
IdCard.java
package com.great.entity3; public class IdCard { private int id; private String cardCode; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCardCode() { return CardCode; } public void setCardCode(String cardCode) { CardCode = cardCode; } }
TestOneToOneUniqueUn.java(测试类)
package com.great.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import com.great.entity3.IdCard; import com.great.entity3.People; public class TestOneToOneUniqueUnidirectional { static Session session; // 一对一单向主键关联 @BeforeClass public static void setUpBeforeClass() throws Exception { // 加载hibernate主配置文件 Configuration cfg = new Configuration().configure(); // 构建session工厂 SessionFactory sf = cfg.buildSessionFactory(); // 打开session session = sf.openSession(); } @AfterClass public static void tearDownAfterClass() throws Exception { // 关闭session,释放资源 session.close(); } // select1, 通过idCard查询people @Test public void testOneToOneSelect1() { People people = (People) session.get(People.class, 1); System.out.println("身份证号码:" + people.getIdCard().getCardCode()); System.out.println("姓名:" + people.getpName()); } // insert1,通过保存people保存数据 两条insert,先保存inCard,再保存people @Test public void testOneToOneSave1() { Transaction ts = session.beginTransaction(); IdCard idCard = new IdCard(); idCard.setCardCode("311487199505051234"); People people = new People(); people.setpName("墨樱22"); people.setIdCard(idCard); session.save(people); ts.commit(); } // delete1, 通过people删除数据 两条select,两条delete,先delete people,再delete idCard @Test public void testOneToOneDelete1() { Transaction ts = session.beginTransaction(); People people = (People) session.get(People.class, 15); session.delete(people); ts.commit(); } // update1,通过people更新数据 两条select,两条update,先update people,再update inCard @Test public void testOneToOneUpdate1() { Transaction ts = session.beginTransaction(); People people = (People) session.get(People.class, 4); people.setpName("张起灵"); people.getIdCard().setCardCode("888888"); session.update(people); ts.commit(); } }
数据库:
people表
两个字段id pName
idcard表
两个字段id cardCode
注意:在people表上建立外键关系。
hibernate一对一主键单向关联的更多相关文章
- hibernate一对一外键单向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- hibernate一对一主键双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- hibernate一对一外键双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate一对一主键映射
Hibernate一对一主键映射 ------------------------------ -- ...
- Hibernate,一对一外键单向 记录。Timestamp 的一个坑。
首先是2张表 表A: 表B: 其中表B中的FormBaseId对应表A中的SubjectID. 数据库中没有设置外键关系. 下面是2个对应的实体 package questionnaire.model ...
- Hibernate一对一外键双向关联(Annotation配置)
如上图所示:一个学生有一个学生证号,一个学生证号对应一名学生.在Hibernate中怎么用Annotation来实现呢? 学生类,主键是id:学生证的主键也是Id: Student.java pack ...
- Hibernate,关系映射的多对一单向关联、多对一双向关联、一对一主键关联、一对一外键关联、多对多关系关联
2018-11-10 22:27:02开始写 下图内容ORM.Hibernate介绍.hibername.cfg.xml结构: 下图内容hibernate映射文件结构介绍 下图内容hibernate ...
- Hibernate关联映射1:一对一主键关联
2张表之间通过主键形成一对一映射关系,如一个人只能有一张身份证: t_identity_card表建表语句: CREATE TABLE `t_identity_card` ( `id` int(11) ...
- 009一对一 主键关联映射_单向(one-to-one)
009一对一 主键关联映射_单向(one-to-one) ² 两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ² 有两种策略可以实现一对一的关联映射 主键关联:即让两个 ...
随机推荐
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
- 百度MIP移动页面加速——不只是CDN
MIP是用CDN做加速的么?准确答案是:是,但不只是. MIP全称Mobile Instant Pages,移动网页加速器,是百度提出的页面加速解决方案.MIP从前端渲染和页面网络传输两方面进行优化, ...
- 一步一步教你用CSS画爱心
今天小颖给大家分享一个用CSS画的爱心,底下有代码和制作过程,希望对大家有所帮助. 第一步: 先画一个正方形.如图: <!DOCTYPE html> <html> <he ...
- zookeeper源码分析之六session机制
zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生. session由sessionTracker产生的,sessio ...
- 独立开发 一个社交 APP 的架构分享 (已实现)
(本博客为原创:http://www.cnblogs.com/linguanh/) My BananaCloud Android Application 前言: 这算是我的第一个 完完全全 由自 ...
- Asp.net Core准备工作
1.安装环境 安装.Net Core SDK 安装VS2015 Update3 安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2.exe 2.新建Core工程 项 ...
- Sass之坑Compass编译报错
前段时间在使用Compass时遇到了其为难处理的一个坑,现记录到博客希望能帮助到各位. 一.问题: 利用Koala或者是gulp编译提示如下,截图为koala编译提示错误: 二.解决办法 从问题截图上 ...
- 如何解决流程开发中SheetRadioButtonList页面取值问题
分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...
- Selenium的PO模式(Page Object Model)[python版]
Page Object Model 简称POM 普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...
- 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案
近期有Linux ASP.NET用户反映,在MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页) ...