hibernate它5.many2one单向

hibernate它5.many2one单向

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

关系数据库表之间的关系:

1 正确 1 

1 正确 许多

许多 正确 许多

表间关系设计

基于主键关联

基于外键关联

基于中间表

1 对 1关系实现:

基于主键关联

基于外键关联

基于中间表

 

1 对 多关系实现:

基于外键关联

基于中间表

多 对 多关系实现:

基于中间表

面向对象实体关系

1 对 1 

1 对 多

多 对 多

方向 :

单向、双向

hibernate它5.many2one单向

CRUD:

many2one配置:

<?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.demo.model">

    <class name="Certificate" table="t_certificate">
        <id name="certificateId" column="certificate_id">
            <generator class="sequence"><param name="sequence">SEQ_T_CERTIFICATE</param></generator>
        </id>
        <property name="certificateName" column="certificate_name"/>
        <property name="certificateNo" column="certificate_no"/>
        <many-to-one name="student" column="student_id"></many-to-one>
    </class>
</hibernate-mapping>

<many-to-one name="student" column="student_id"></many-to-one>

增、删、改

@Test
	public void addTest() {
		Student student = new Student();
		student.setStudentName("王五");
		student.setAge(35);

		Certificate certificate1 = new Certificate();
		certificate1.setCertificateName("aa");
		certificate1.setCertificateNo("3a10001");
		certificate1.setStudent(student);
		Certificate certificate2 = new Certificate();
		certificate2.setCertificateName("bb");
		certificate2.setCertificateNo("3a10002");
		certificate2.setStudent(student);

		Session session = null;

		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			// 先保存one,再保存many
			session.save(student);
			session.save(certificate1);
			session.save(certificate2);
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			HibernateUtil.closeSession(session);
		}

	}

	@Test
	public void deleteTest() {
		Student student = new Student();
		student.setStudentId(1);
		Certificate certificate1 = new Certificate();
		certificate1.setCertificateId(1);
		Certificate certificate2 = new Certificate();
		certificate2.setCertificateId(2);
		Session session = null;

		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			session.delete(certificate1);
			session.delete(certificate2);
			session.delete(student);
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			HibernateUtil.closeSession(session);
		}
	}

	@Test
	public void updateTest() {
		Student student = new Student();
		student.setStudentId(2);
		student.setStudentName("赵四");
		Certificate certificate1 = new Certificate();
		certificate1.setCertificateId(3);
		certificate1.setCertificateName("cc");
		certificate1.setCertificateNo("s0001");
		certificate1.setStudent(student);
		Certificate certificate2 = new Certificate();
		certificate2.setCertificateId(4);
		certificate2.setCertificateName("dd");
		certificate2.setCertificateNo("s0002");
		certificate2.setStudent(student);
		Session session = null;

		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			session.update(certificate1);
			session.update(certificate2);
			session.update(student);
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			HibernateUtil.closeSession(session);
		}
	}

getTest:

@Test
	public void updateTest() {
		Student student = new Student();
		student.setStudentId(2);
		student.setStudentName("赵四");
		Certificate certificate1 = new Certificate();
		certificate1.setCertificateId(3);
		certificate1.setCertificateName("cc");
		certificate1.setCertificateNo("s0001");
		certificate1.setStudent(student);
		Certificate certificate2 = new Certificate();
		certificate2.setCertificateId(4);
		certificate2.setCertificateName("dd");
		certificate2.setCertificateNo("s0002");
		certificate2.setStudent(student);
		Session session = null;

		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			session.update(certificate1);
			session.update(certificate2);
			session.update(student);
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			HibernateUtil.closeSession(session);
		}
	}

结果:

Hibernate: select certificat0_.certificate_id as certific1_1_0_, certificat0_.certificate_name as certific2_1_0_, certificat0_.certificate_no as certific3_1_0_, certificat0_.student_id as student4_1_0_ from t_certificate certificat0_ where certificat0_.certificate_id=?
3
证书名称:cc
Hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?

学员名称:赵四

Student(one)对象被延迟载入了,many2one中,
get支持延迟载入

loadTest:

@Test
	public void loadTest() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			Certificate certificate = (Certificate) session.load(
					Certificate.class, 3);
			System.out.println(certificate.getCertificateId());
			System.out.println("证书名称:"+certificate.getCertificateName());
			System.out.println("学员名称:"+certificate.getStudent().getStudentName());
			session.getTransaction().commit();
		} catch (Exception e) {
			session.getTransaction().rollback();
			e.printStackTrace();
		} finally {
			HibernateUtil.closeSession(session);
		}
	}

结果:

3
Hibernate: select certificat0_.certificate_id as certific1_1_0_, certificat0_.certificate_name as certific2_1_0_, certificat0_.certificate_no as certific3_1_0_, certificat0_.student_id as student4_1_0_ from t_certificate certificat0_ where certificat0_.certificate_id=?
证书名称:cc
Hibernate: select student0_.student_id as student1_0_0_, student0_.student_name as student2_0_0_, student0_.age as age0_0_ from t_student student0_ where student0_.student_id=?
学员名称:赵四


many与one都被延迟载入

补充表结构及实体类源代码:

t_student

hibernate它5.many2one单向

t_certificate:

hibernate它5.many2one单向

Student:

package com.demo.model;

import java.io.UnsupportedEncodingException;

/**学生信息双向
 * @author wobendiankun
 *2014-10-19 下午08:54:29
 */
public class Student {
	private int studentId ;
	private String studentName ;
	private int age;
	public int getStudentId() {
		return studentId;
	}
	public void setStudentId(int studentId) {
		this.studentId = studentId;
	}
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		String str="";
		if(studentName!=null){
			try {
				str=new String(studentName.getBytes("UTF-8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return "Student [studentId=" + studentId + ", studentName="
				+ str + ", age=" + age + "]";
	}
	
}

Certificate

package com.demo.model;

/**从业资格证书
 * @author wobendiankun
 *2014-10-25 上午11:43:21
 */
public class Certificate {
	/**
	 * 证书id
	 */
	private int certificateId ;
	/**
	 * 证书名称
	 */
	private String certificateName;
	/**
	 *证书编号
	 */
	private String certificateNo ;
	
	private Student student ;
	public int getCertificateId() {
		return certificateId;
	}
	public void setCertificateId(int certificateId) {
		this.certificateId = certificateId;
	}
	public String getCertificateName() {
		return certificateName;
	}
	public void setCertificateName(String certificateName) {
		this.certificateName = certificateName;
	}
	public String getCertificateNo() {
		return certificateNo;
	}
	public void setCertificateNo(String certificateNo) {
		this.certificateNo = certificateNo;
	}
	public Student getStudent() {
		return student;
	}
	public void setStudent(Student student) {
		this.student = student;
	}
	
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117521.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 使用Postman做mock测试

    使用Postman做mock测试为什么要做mock测试?一般在对第三方接口(如银联、支付宝、微信等),使用mock来模拟被请求的接口还有是在业务依赖的关系接口未开发出来时,测试人员为了保证项目的测试进度不受影响,就需要构造出来一个虚拟的接口来进行一系列的接口测试一、打开postman,创建mockserver在左上角有一个New,点开后会有下拉列表展示,选择里面的MockServer勾选Request-Body(请求内容)填写mock测试的各个请求参数之后点击Next,下一步createmockserv.

  • 数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历「建议收藏」

    数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历「建议收藏」最近也是在准备笔试,由于没有系统的学过数据结构,所以每次在考到二叉树的遍历的时候都是直接跪,次数多了也就怒了,前些天也是准备论文没时间整这些,现在提交了,算是稍微轻松点了,所以花了半天的时间来学了下二叉树。现在记下来,以便后序查阅。一、二叉树的遍历概念  1. 二叉树的遍历是指从根结点触发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。(1).前(

  • MySQL 系列(四)主从复制、备份恢复方案生产环境实战[通俗易懂]

    MySQL 系列(四)主从复制、备份恢复方案生产环境实战

  • 报文学习四(LLDP协议)「建议收藏」

    报文学习四(LLDP协议)「建议收藏」1.LLDP出现的原因随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)就是用于这个目的的协议。当一个设备从网络中接收到其它设备的这些信息时,它就将…

  • ods数据库是什么意思_数据仓库ods层和dw层的区别

    ods数据库是什么意思_数据仓库ods层和dw层的区别这两天看书,发现了和数据仓库相关的还有一个叫ODS的概念,它是企业级的全局数据库,用于提供集成的,企业级一致的数据,包含如何从各个子系统中向ODS抽取数据以及面向主题的角度存储数据。它和数据仓库的主要区别:数据仓库是面向主题的、集成的、随时间变化的、非易失的、用于进行战略型决策的数据集合。ODS是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息…

  • f1 score 代码_在pytorch 中计算精度、回归率、F1 score等指标的实例「建议收藏」

    f1 score 代码_在pytorch 中计算精度、回归率、F1 score等指标的实例「建议收藏」pytorch中训练完网络后,需要对学习的结果进行测试。官网上例程用的方法统统都是正确率,使用的是torch.eq()这个函数。但是为了更精细的评价结果,我们还需要计算其他各个指标。在把官网API翻了一遍之后发现并没有用于计算TP,TN,FP,FN的函数。。。在动了无数歪脑筋之后,心想pytorch完全支持numpy,那能不能直接进行判断,试了一下果然可以,上代码:#TPpredict和l…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号