第二百三十九节 JPA教程 - JPA一对一延迟加载示例

ops/2024/9/21 10:18:06/

JPA教程 - JPA一对一延迟加载示例

以下代码显示如何使用延迟加载设置执行一对一映射。

  @OneToOne(fetch=LAZY)private Department department;

例子

下面的代码来自Person.java

package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import static javax.persistence.FetchType.LAZY;
@Entity
public class Person {@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private long id;private String name;@OneToOne(fetch=LAZY)private Department department;public Person() {}public Person(String name) {this.name = name;}public Department getDepartment() {return department;}public void setDepartment(Department department) {this.department = department;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + "]";}}

下面的代码来自Department.java

package cn.w3cschool.common;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;@Entity
public class Department {@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private long id;private String name;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

下面的代码来自PersonDaoImpl.java

package cn.w3cschool.common;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;import org.springframework.transaction.annotation.Transactional;@Transactional
public class PersonDaoImpl {public void test(){Person p1 = new Person("Tom");p1.setName("Tom");Department d = new Department();d.setName("Design");p1.setDepartment(d);em.persist(p1);em.persist(d);}@PersistenceContextprivate EntityManager em;
}

以下是数据库转储。

Table Name: DEPARTMENTRow:Column Name: ID,Column Type: BIGINT:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: DesignTable Name: PERSONRow:Column Name: ID,Column Type: BIGINT:Column Value: 1Column Name: NAME,Column Type: VARCHAR:Column Value: TomColumn Name: DEPARTMENT_ID,Column Type: BIGINT:Column Value: 1


 


http://www.ppmy.cn/ops/113735.html

相关文章

Spring Boot校园管理系统:技术选型与架构设计

第2章相关技术 2.1 B/S架构 B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的…

Vue接入高德地图并实现基本的路线规划功能

目录 一、申请密钥 二、安装依赖 三、代码实现 四、运行截图 五、官方文档 一、申请密钥 登录高德开放平台,点击我的应用,先添加新应用,然后再添加Key。 如图所示填写对应的信息,系统就会自动生成。 二、安装依赖 npm i am…

PMP--二模--解题--41-50

文章目录 11.风险管理--风险代表对将来问题的预判,问题代表对过去问题事件的跟踪;两者联系:风险发生后会变成问题,而问题可能导致新的风险。41、 [单选] 在项目会议期间,一个团队发现三个月前关闭的问题仍然处于活跃状…

PyQt / PySide + Pywin32 + ctypes 自定义标题栏窗口 + 完全还原 Windows 原生窗口边框特效项目

项目地址: GitHub - github201014/PyQt-NativeWindow: A class of window include nativeEvent, use PySide or PyQt and Pywin32 and ctypesA class of window include nativeEvent, use PySide or PyQt and Pywin32 and ctypes - github201014/PyQt-NativeWindow…

WPF 中的线程池

WPF 中的线程池 在 WPF 中,虽然应用程序主要运行在 UI 线程上,但我们可以使用 线程池 来执行后台任务而不会阻塞 UI 线程。WPF 中常用的线程池是 .NET 线程池,可以通过 ThreadPool 类或 Task 来管理后台任务。以下是 WPF 中如何使用线程池及…

WPF入门教学四 WPF控件概述

在WPF(Windows Presentation Foundation)中,控件是构建用户界面的基本元素。它们使得开发人员能够创建出功能丰富、交互性强的应用程序。本部分将概述WPF中的控件,并介绍一些常用的控件及其基本用法。 WPF控件概述 WPF提供了多种…

Java 计算两个日期相差

java 8 比较日期核心 api ChronoUnit 可比较 年、月、周、日、时、分、秒、毫秒、微秒、纳秒 import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.time.temporal.Temporal;public class DateUtil {public st…

AI火爆,传统的规则引擎是否无用武之地?

随着ChatGPT的问世,AI的火爆程度再一次被点燃,但看目前市场上对于GPT的应用依旧处于探索阶段,除了基座大模型之外,并没有真正意义上的AI原生成功产品。也就是说,目前大多数产品都还处于探索阶段。 ChatGPT如此火爆&am…