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的文档 整个创建到使用的步骤都写在里面了 立即下载

相关推荐

Gitee自动创建PR之——评审模式

一 创建PR的常规操作 本地更新主干(一般为master分支),基于主干新建一个分支并(如Dev分支)切换; 进行新的需求开发; 将这个分支推送到远端; 打开 Gitee ,进入创建 Pull Request 界面; 选定目标分支(及我们需要合并到主干分支的分支,一般即为我们的开发分支); 填写 Title 以及 Description; 点击提交 Pull Request。 二 更快的常见PR的方式— — 评审模式 现在 Gitee.

calm_encode的博客 2986

hiberbate session 详解

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

vivian3an的专栏 195

excel 利用SUBTOTAL函数计算筛选后数列总和、均值、最大、最小值

表里有三个人,咱们需要筛选出三个人,并分别计算他们的总和值。 先看一下数据范围(A1:B27) 通过筛选找张三。 按照上图所示输入函数,选择9,求和。 然后按照函数输入即可。 就能计算出结果。 筛选项选择王五,就会自动计算王五的总和。 筛选到李四就会自动计算李四的总和。 如果把9改成1,就是自动计算筛选出来的均值结果,如下图所示。 如果改成4就是取筛选项的最大值,选择5就是取最小值。 ...

yuanYW7556的博客 3万+

hibernate注解配置关联关系

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

陌上离歌 337

TwinCAT3实战:从零搭建倍福PLC的Modbus-TCP Server

本文详细介绍了如何使用TwinCAT3从零搭建倍福PLC的Modbus-TCP Server,包括环境准备、工程配置、参数设置、客户端连接测试及常见问题排查。通过实战步骤和实用技巧,帮助工程师快速掌握倍福PLC与Modbus-TCP的通信实现,提升工业自动化项目的开发效率。

weixin_30797199的博客 173

精确时钟同步协议ptp/IEEE-1588v2协议-------(1)简介

ptp, 1588V2, IEEE-1588, 精确时钟同步协议

meihualing的专栏 5356

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

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

lanzhghz100的博客 203

SAP 52策略测试简介

我们看下下层物料的需求,可以看到物料的需求已经跑出来了,我们双击计划订单,发现是没有办法将计划订单转换为采购申请的,这里是否还记得我们在前面创建主数据的时候独立集中我们填写的是1,所以物料继承了上层物料的策略,所以不能将计划订单进行转换。我们在前面测试了50策略按单生产,创建完计划独立需求后,通过主数据中的独立集中的字段控制下层物料是否能通过计划订单转成生产订单和采购订单。可以看到下层物料的计划订单就可以转采购申请了,到这里可以看到52策略和50策略的计划独立需求完全是一样的。

我小时候很黑的博客 1270

Hiberbate1对多

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

dddidi_的博客 194

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5541

LM358模拟声音传感器原理图设计,已量产(声音传感器)

最近在做智能家居设备的声音触发模块时,搭了个基于 LM358 的模拟声音传感器电路 —— 不用复杂的专用芯片,靠通用运放就能把环境声音转化为可被单片机 AD 采集的电压信号,成本压得很低,实际调试下来灵敏度和稳定性都够用。今天把这个电路拆解开,聊聊每部分的设计思路。

不脱发的程序猿 469

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

slew dreate,slew threshold与transition计算

​只看rise情况下,from pin取slew threshold10%-90%的区间,slew derate为1,计算得到transition为1.002e-10,to pin的slew threshold 为30%-70%,slew derate 0.5,从波形列表上取相近的值3.75e-10和8.75e-10,计算得到transition为(8.75e-10-3.75e-10)/0.5=1e-9,考虑精度和取值区间问题,基本符合工具计算的值,如下:​。如下示例,在.lib库中有定义以下内容。

m0_61544122的博客 792

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hiberbate

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

wofangzhou的博客 1074

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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、付费专栏及课程。

余额充值