package one_to_one;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table; import com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader; @Table(name = "JPA_DEPARTMENT")
@Entity
public class Department { private Integer id;
private String name; private Manager manager; @GeneratedValue(strategy = GenerationType.AUTO)
@Id
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} //注意:1-2关联关系,需要添加unique = true
@JoinColumn(name = "mgr_id", unique = true)
@OneToOne(fetch=FetchType.LAZY)
public Manager getManager() {
return manager;
} public void setManager(Manager manager) {
this.manager = manager;
} }
package one_to_one;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table; @Table(name = "JPA_MANAGER")
@Entity
public class Manager {
private Integer id;
private String mgrName;
private Department department; @GeneratedValue(strategy = GenerationType.AUTO)
@Id
public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getMgrName() {
return mgrName;
} public void setMgrName(String mgrName) {
this.mgrName = mgrName;
} @OneToOne(mappedBy = "manager")
public Department getDepartment() {
return department;
} public void setDepartment(Department department) {
this.department = department;
} }
package one_to_one;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence; public class Main3 { public static void main(String[] args) {
// TODO Auto-generated method stub String persistenceUnitName = "jpa-1";
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName); EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction();
transaction.begin(); // oneToOnePersist(entityManager);
oneToOneFind(entityManager); transaction.commit();
entityManager.close();
entityManagerFactory.close();
} // 建议先保存不维护关联关系的一方,即没有外键的一方,这样不会多出update语句
private static void oneToOnePersist(EntityManager entityManager) {
Manager manager = new Manager();
manager.setMgrName("M-AA"); Department department = new Department();
department.setName("D-AA"); manager.setDepartment(department);
department.setManager(manager); entityManager.persist(manager);
entityManager.persist(department);
} // 默认通过左连接加载对象
// 如果通过设置@OneToOne的fetch属性为lazy,还是会用左连接,且会多查询
private static void oneToOneFind(EntityManager entityManager) {
Department dept = entityManager.find(Department.class, 1);
System.out.println(dept);
System.out.println(dept.getManager().getMgrName());
}
}

JPA笔记3 OneToOne的更多相关文章

  1. Spring Data JPA笔记

    1. Spring Data JPA是什么 Spring Data JPA是Spring Data大家族中的一员,它对对持久层做了简化,用户只需要声明方法的接口,不需要实现该接口,Spring Dat ...

  2. Jpa 笔记

    ORM 思想 对象关系映射, 建立实体类和表的关系映射关系, 实体类和表中字段的映射关系,我们操作实体类底层是操作数据表, 进而自动的拼接出SQL语句 Jpa规范 Jpa(Java Persisten ...

  3. JPA笔记4 ManyToMany

    package many_to_many; import java.util.HashSet; import java.util.Set; import javax.persistence.Entit ...

  4. JPA笔记2 OneToMany

    package one_to_many; import java.util.HashSet; import java.util.Set; import javax.persistence.Cascad ...

  5. JPA笔记1 ManyToOne

    persistence.xml <?xml version="1.0" encoding="UTF-8"?> <persistence ver ...

  6. jpa

    学习尚硅谷jpa笔记: 所依赖的jar包: 首先在META-INF下创建配置文件,persistence.xml <?xml version="1.0" encoding=& ...

  7. jpa和hibernate注解

    http://www.objectdb.com/api/java/jpa/JoinColumns 用hibernate和jpa annotation 大概一年多了,今天闲来无事,对他们关联关系元数据写 ...

  8. JPA概要

    1 JPA概述 JPA(Java Persistence API,Java持久化API),定义了对象-关系映射(ORM)以及实体对象持久化的标准接口. JPA是JSR-220(EJB3.0)规范的一部 ...

  9. JPA + SpringData 操作数据库 ---- 深入了解 SpringData

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7735616.html ------------------------------------ ...

随机推荐

  1. Linux 下Postgresql 命令:

    关闭:service postgresql stop 启动:service postgresql start 启动数据库:pg_ctl start -D /data/postgres 重启数据库: p ...

  2. Microsoft Office自制安装指南 —Nusen_Liu

    Microsoft Word 2010 正版下载安装步骤 版权来自:Nusen_Liu 1.   解压文件(推荐解压到当前文件夹,大神也可以自定义的)下载地址在第16步 (*^__^*) 2.   解 ...

  3. Linux—各种重要配置文件详解

    一./etc/profile文件详解(环境变量) 添加环境变量 .编辑profile文件 [root@localhost ~]# vi /etc/profile .在profile文件中添加如下内容 ...

  4. 受限玻尔兹曼机(Restricted Boltzmann Machine)

    受限玻尔兹曼机(Restricted Boltzmann Machine) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 生成模型 2. 参数学 ...

  5. Python学习笔记3 函数_20170614

    # 函数 定义 def my_abs(x) : if not isinstance(x, (int, float)) : raise TypeError('bad operand type') if ...

  6. GET POST 区分

    get传送的数据量较小,不能大于2KB.post传送的数据量较大,一般被默认为不受限制.但理论上,IIS4中最大量为80KB,IIS5中为100KB. get安全性非常低,get设计成传输数据,一般都 ...

  7. UVA10559 方块消除 Blocks(区间dp)

    一道区间dp好题,在GZY的ppt里,同时在洛谷题解里看见了Itst orz. 题目大意 有n个带有颜色的方块,没消除一段长度为 \(x\) 的连续的相同颜色的方块可以得到 \(x^2\) 的分数,用 ...

  8. JDOJ3011 铺地板III

    JDOJ3011 铺地板III https://neooj.com/oldoj/problem.php?id=3011 题目描述 有3 x N (0 <= N <= 105)的网格,需要用 ...

  9. NOIP模拟赛 迷路

    题目描述 Description \(FYH\) 在 \(ns\) 星系迷路了,情急之下,他找到了你.现在,解救 \(FYH\) 的重任就落在了你的肩上了. \(ns\) 星系有 \(n\) 颗星球, ...

  10. QBXT模拟赛1

    总结 期望得分:\(100 + 80 + 10 = 190\) 实际得分:\(90 + 80 + 10 = 180\) 这是在清北的第一场考试,也是在清北考的最高的一次了吧..本来以为能拿\(190\ ...