hiberbate的一对一关联关系

Hiberbate增删改查(分页)的例子简单的 Hiberbate增删改查的例子简单的有分面。简单的, 立即下载

    接着昨天的,今天我们来看一下一对一关联关系。我个人觉得这个关系最简单,理解起来也比较容易,在现实生活中这样的例子很多:如人和身份证,学生和学生证等。下面我来写一个人和身份证的例子。这个例子我做了简化,属性也比较少。开发环境我就不多说了,下面就一步一步的来写一下这个例子。

1.写2个vo类

package org.lxh.vo;

public class Person {
	private int id;
	private String name;
    private Card card;
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Card getCard() {
		return card;
	}

	public void setCard(Card card) {
		this.card = card;
	}

}


 

package org.lxh.vo;

public class Card {
	private int id;
	private String birthday;
	private Person person;
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

	
}


 

在这里一个人对应一个身份证也可以说一个身份证只属于某个人,这里使用单项关联和双向关联都可以,我个人建议使用单项关联。

 

2.写2个hibernate映射文件,代码如下。

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">

    <class name="org.lxh.vo.Person" table="person">

        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="name" column="name"/>
        <!-- <one-to-one name="card"/> --> <!-- 2个都写就表示双向关联 -->
        <!-- <many-to-one name="card" unique="true"/> --> <!-- 多对一的特殊情况 -->
        
    </class> 

</hibernate-mapping>


 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">

    <class name="org.lxh.vo.Card" table="card">

        <id name="id" column="id">
            <generator class="foreign">
              <param name="property">person</param> <!-- 这里的id是外键主键表就是person -->
            </generator>
        </id>

        <property name="birthday" column="birthday"/>
        <one-to-one name="person"/>
        
    </class> 

</hibernate-mapping>


 

3.最后来写一个Junit4测试一下所写的代码,至于查询的代码,我就不写出来了大家可以自己写,下面的代码段含有昨天的测试部分,大家看清楚啊。

package org.lxh.test;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.BeforeClass;
import org.lxh.vo.Article;
import org.lxh.vo.Author;
import org.lxh.vo.Card;
import org.lxh.vo.Person;

import util.HibernateUtil;

public class Test {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
    @org.junit.Test public void save(){
    	Session ses=null;
    	
    	Transaction tr=null;
    	try{
    		ses=HibernateUtil.getSession();
    		tr=ses.beginTransaction();
    		Author author=new Author();
    		author.setName("chenwill4");
    		Article article=new Article();
    		article.setAuthor(author);  //建立2个对象的关联
    		article.setName("老鹰抓小鸡3");
    		ses.save(author);  //将author信息保存
    		ses.save(article);
    		tr.commit();      //将事务提交,否侧数据不会被保存
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		if(ses!=null){
    			ses.close();  //关闭连接,否则会把数据库卡死
    		}
    	}
    	
    }
    @org.junit.Test public void queryByAuthor(){
    	Session ses=null;
    	
    	Transaction tr=null;
    	try{
    		ses=HibernateUtil.getSession();
    		tr=ses.beginTransaction();
    		Article art=(Article)ses.get(Article.class, 3);
    		
    		
    		System.out.println("作者的姓名是:"+art.getAuthor().getName());  //通过文章查询作者
    		
    		
    		tr.commit();      //将事务提交
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		if(ses!=null){
    			ses.close();  //关闭连接,否则会把数据库卡死
    		}
    	}
    	
    }
    
    @org.junit.Test public void insert121(){
    	Session ses=null;
    	
    	Transaction tr=null;
    	try{
    		ses=HibernateUtil.getSession();
    		tr=ses.beginTransaction();
    		Card card=new Card();
    		Person p=new Person();
    		p.setCard(card);
    		p.setName("陈瑞银");
    		
    		
    		card.setBirthday("2009-02-12");
    		card.setPerson(p);
    		ses.save(card);
    		ses.save(p);
    		tr.commit();      //将事务提交
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		if(ses!=null){
    			ses.close();  //关闭连接,否则会把数据库卡死
    		}
    	}
    	
    }
}


 

ok程序写好了,来看一下效果截图,如下图所示,

 

 

好了,到这里程序就结束了,源代码在我的资源里免积分下载,需要的可以自己弄,有问题可以和我交流。

Hibernate关联关系 讲诉了关联的创建和使用 整理成了一份txt的文档 整个创建到使用的步骤都写在里面了 立即下载

相关推荐

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9003

hiberbate session 详解

org.hibernate Interface Session All Superinterfaces: Serializable All Known Subinterfaces: EventSource, Session All Known Implementing Classes: SessionImpl ---------------------------...

vivian3an的专栏 195

光线追踪渲染实战:蒙特卡洛路径追踪及其c++实现

光线追踪超越了传统的图形流水线,是一种现代的渲染。光线追踪是一种基于物理的渲染方法,通过模拟光在介质中的真实表现来输出足以逼近现实的图像。光线从光源出发,经过各种反射折射,进入摄像机。通过渲染方程描述一点的颜色,并且通过蒙特卡洛方法求解渲染方程来获取最终的像素颜色。

AKGWSB 's blog 1万+

hibernate注解配置关联关系

1.在判断到底是谁维护关联关系时,可以通过查看外键,哪个实体类定义了外键,哪个类就负责维护关联关系。 JoinColumn(name="pid") 2. 在保存数据时,总是先保存的是没有维护关联关系的那一方的数据,后保存维护了关联关系的那一方的数据,如:              Person p = new Person();             p.setName("xiaoluo"); ...

陌上离歌 337

ISA-95(S95)标准详解

ISA-95是制造业系统集成的“通用语言”,通过分层模型和信息流规范,打通企业计划层与设备控制层,成为实现数字化工厂的核心标准之一。其与ISA-88的协同应用,可进一步优化生产执行与资源管理的效率。标准,旨在解决企业商业系统(如ERP)与工业控制系统(如MES、SCADA)之间的集成问题。

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 3737

伺服驱动器启用后对传感器线信号干扰的解决方案

在一些Arduino项目中,研究者发现,当伺服电机启动时,传感器信号会出现显著噪声。例如,在一个假肢项目中,研究者使用光电隔离器成功隔离了伺服驱动器对EMG传感器的干扰。然而,当启用伺服驱动器时,传感器线信号常常受到干扰,导致系统性能下降。传感器线信号是传感器输出的电信号,用于测量物理量,如温度、光线或位置。例如,在一些案例中,伺服驱动器的开关操作可能导致传感器信号出现尖峰或波动,特别是在模拟传感器上更为明显。描述: 使用光电隔离或其他隔离技术,分离伺服驱动器和传感器的电气路径,防止直接干扰。

有用好玩有趣的“电”知识 1466

Hibernate关联关系配置(一对多、一对一和多对多)

第一种关联关系:一对多(多对一) "一对多"是最普遍的映射关系,简单来讲就如消费者与订单的关系。 一对多:从消费者角的度来说一个消费者可以有多个订单,即为一对多。 多对一:从订单的角度来说多个订单可以对应一个消费者,即为多对一。   一对多关系在hbm文件中的配置信息: 消费者(一方): xml version="1.0" encoding="utf-8"

lanzhghz100的博客 203

多模态论文笔记——VQ-VAE和VQ-VAE-2

本文详细介绍VQ-VAE和VQ-VAE-2的原理和训练过程,为后面的dVAE在DALLE中的使用打下坚实的基础。

haopinglianlian的博客 3299

Hiberbate1对多

*技术分析之Hibernate的关联关系映射之一对多映射(重点)**          1. JavaWEB中一对多的设计及其建表原则          2. 先导入SQL的建表语句         * 创建今天的数据库:create database hibernate_day03;         * 在资料中找到客户和联系人的SQL脚本          3. 编写客户和联系人的JavaBe...

dddidi_的博客 194

Challenge 6 - OSCP C

开放了161端口,直接snmpbulkwalk扫描得到账号密码试了那几个web端口,发现可以登录8083的vesta,但是需要用户名大写Jack接着登录之后里面可以创建计划任务,直接弄个反弹shell,一分钟回弹。得到shell后,运行linpeas.sh提供了几个可能的漏洞,挨个试一下。

羽的博客 4120

ardupilot开发 --- mavlink签名加密 篇

ardupilot开发 --- mavlink签名加密

记录老板的每次pua,分享领导每天的毒鸡汤... 1235

hibernate关联关系

一、一对多的关联配置 1、关联指的是类之间的引用关系。 如果类A与类B关联,那么被引用的类B将被定义为类A的属性。 2、一对多的关联: 例如:订单和订单项,一个订单有多个订单项; 但是一个订单项只有一个订单; 3、创建实体类和映射文件 ①、实体类: (1)Order package com.ysq.two.entity; import java.util.HashSet; import java.util.Set; public class Order { // ...

m0_60375302的博客 184

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例

FANUC机器人通过ROBOGUIDE实现与实际的机器人进行程序导入导出的具体方法示例

Robot_PLC_HMI_Automation 6534

Hiberbate新手笔记

第一个hibernate项目: 1、新建java项目 2、创建User Library,加入如下jar        * HIBERNATE_HOME/hibernate3.jar        * HIBERNATE_HOME/lib/*.jar        * MySql jdbc驱动 3、创建hibernate配置文件hibernate.cfg.xml,为了便于调试

magicsongs的专栏 532

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

hiberbate入门

这里写目录标题一、什么是hibernate二、如何在项目中添加hibernate三、hibernate 核心api分析 一、什么是hibernate ORM框架/持久层框架 dao dao jdbc hibernate jdbc ORM(Object Relational Mapping):对象关系映射。 对象与关系型数据库之间的映射管理框架 优势:跨数据库的无缝移植(SqlServer、Oracle、MySql) 二、如何在项目中添加hibernate 1、添加hiber

weixin_45576466的博客 400

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hiberbate

主键关联:从表的主键,同时又是主表的外键,从表没有单独的外键列 外键关联:从表中存在外键列,关联主表的主键列。但外键列是不重复的 cascade和inverse的区别: cascade表示级联操作,当主表记录做操作时,从表记录做相应的操作,维护的是记录 inverse表示控制反转。当该属性设置为真是,表示由关联对象维护外键关系,当前对象不做外键维护,维护的是外键 一般来说,inverse设置

wofangzhou的博客 1074

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

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

Hiberbate

(页面-1)* 条数,条数 ---分页查询的公式(2-1)*2,2 <property name="show_sql">true</property>--在控制台,可查看生成的sql语句<property name="hbm2ddl.auto">update</property>--自动检测是否有表,否,则创建<property name="...

weixin_30650039的博客 153

hiberbate 缓存问题

纯属引用   随着Hibernate在Java开发中的广泛应用,我们在使用Hibernate进行对象持久化操作中也遇到了各种各样的问题。这些问题往往都是我们对Hibernate缺乏了解所致,这里我讲个我从前遇到的问题及一些想法,希望能给大家一点借鉴。       这是在一次事务提交时遇到的异常。       an assertion failure occured (this ma...

Tomcat2009的专栏 264

hiberbate HQL

hibernate查询语言(Hibernate Query language,HQL),它是Hibernate提供的一种面向对象的查询语言,和SQL查询语言很相似。在Hibervate提供的各种查询方式中,它是使用最广泛的一种,也是官方推荐使用的查询方式,它具有一下功能: (1)在查询语句中设定各种查询条件。 (2)支持动态绑定参数。 (3)支持投影查询(即仅检索出对象的部分属性)、分页查询

wangli325的专栏 1796

hibernate关联关系(一对多)

什么是关联(association) 关联指的是类之间的引用关系。如果类A与类B关联,那么被引用的类B将被定义为类A的属性。例如: class B{ private String name; private List<A> bs = new arraylist(); } public class A{ private B b = new B; ...

qq_45179408的博客 261

struts2与hibernate结合的一对一增删改查以及hiberbate当中一对一的增删改

hibernate框架中的游离态与持久态和自由态分别是什么 游离态是指session空间中没有这个对象(这个对象没有纳入session的管理范围内),数据库有与之对应的数据 //创建对象 Student stu=new Student(); //将对象从session当中踢出 session.evict(); s.setAge(10); 持久态是指:session空间中有这个对象(在sessio...

小小&大大 380

hiberbate mybatis ibatis对比

https://www.cnblogs.com/inspurhaitian/p/4647485.html https://blog.youkuaiyun.com/qq_21033663/article/details/50281161 ibatis与mybatis区别? ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybati...

qq_38796613的博客 211

Hiberbate主键生成策略

下面让我们看一下几种常用的主键生成方式:1、 自动增长identity:适用于MySQL、DB2、MS SQL Server,采用数据库生成的主键,用于为long、short、int类型生成唯一标识使用SQL Server 和 MySQL 的自增字段,这个方法不能放到 Oracle 中,Oracle 不支持自增字段,要设定sequence(MySQL 和 SQL Server 中很常用...

a727808的博客 155
上一篇: hibernate中的一对多关联关系
下一篇: hibernate多对多关联关系
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值