1. package one_to_one;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.FetchType;
  5. import javax.persistence.GeneratedValue;
  6. import javax.persistence.GenerationType;
  7. import javax.persistence.Id;
  8. import javax.persistence.JoinColumn;
  9. import javax.persistence.OneToOne;
  10. import javax.persistence.Table;
  11.  
  12. import com.sun.org.apache.xml.internal.resolver.readers.TR9401CatalogReader;
  13.  
  14. @Table(name = "JPA_DEPARTMENT")
  15. @Entity
  16. public class Department {
  17.  
  18. private Integer id;
  19. private String name;
  20.  
  21. private Manager manager;
  22.  
  23. @GeneratedValue(strategy = GenerationType.AUTO)
  24. @Id
  25. public Integer getId() {
  26. return id;
  27. }
  28.  
  29. public void setId(Integer id) {
  30. this.id = id;
  31. }
  32.  
  33. public String getName() {
  34. return name;
  35. }
  36.  
  37. public void setName(String name) {
  38. this.name = name;
  39. }
  40.  
  41. //注意:1-2关联关系,需要添加unique = true
  42. @JoinColumn(name = "mgr_id", unique = true)
  43. @OneToOne(fetch=FetchType.LAZY)
  44. public Manager getManager() {
  45. return manager;
  46. }
  47.  
  48. public void setManager(Manager manager) {
  49. this.manager = manager;
  50. }
  51.  
  52. }
  1. package one_to_one;
  2.  
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.GenerationType;
  6. import javax.persistence.Id;
  7. import javax.persistence.OneToOne;
  8. import javax.persistence.Table;
  9.  
  10. @Table(name = "JPA_MANAGER")
  11. @Entity
  12. public class Manager {
  13. private Integer id;
  14. private String mgrName;
  15. private Department department;
  16.  
  17. @GeneratedValue(strategy = GenerationType.AUTO)
  18. @Id
  19. public Integer getId() {
  20. return id;
  21. }
  22.  
  23. public void setId(Integer id) {
  24. this.id = id;
  25. }
  26.  
  27. public String getMgrName() {
  28. return mgrName;
  29. }
  30.  
  31. public void setMgrName(String mgrName) {
  32. this.mgrName = mgrName;
  33. }
  34.  
  35. @OneToOne(mappedBy = "manager")
  36. public Department getDepartment() {
  37. return department;
  38. }
  39.  
  40. public void setDepartment(Department department) {
  41. this.department = department;
  42. }
  43.  
  44. }
  1. package one_to_one;
  2.  
  3. import javax.persistence.EntityManager;
  4. import javax.persistence.EntityManagerFactory;
  5. import javax.persistence.EntityTransaction;
  6. import javax.persistence.Persistence;
  7.  
  8. public class Main3 {
  9.  
  10. public static void main(String[] args) {
  11. // TODO Auto-generated method stub
  12.  
  13. String persistenceUnitName = "jpa-1";
  14. EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
  15.  
  16. EntityManager entityManager = entityManagerFactory.createEntityManager();
  17.  
  18. EntityTransaction transaction = entityManager.getTransaction();
  19. transaction.begin();
  20.  
  21. // oneToOnePersist(entityManager);
  22. oneToOneFind(entityManager);
  23.  
  24. transaction.commit();
  25. entityManager.close();
  26. entityManagerFactory.close();
  27. }
  28.  
  29. // 建议先保存不维护关联关系的一方,即没有外键的一方,这样不会多出update语句
  30. private static void oneToOnePersist(EntityManager entityManager) {
  31. Manager manager = new Manager();
  32. manager.setMgrName("M-AA");
  33.  
  34. Department department = new Department();
  35. department.setName("D-AA");
  36.  
  37. manager.setDepartment(department);
  38. department.setManager(manager);
  39.  
  40. entityManager.persist(manager);
  41. entityManager.persist(department);
  42. }
  43.  
  44. // 默认通过左连接加载对象
  45. // 如果通过设置@OneToOne的fetch属性为lazy,还是会用左连接,且会多查询
  46. private static void oneToOneFind(EntityManager entityManager) {
  47. Department dept = entityManager.find(Department.class, 1);
  48. System.out.println(dept);
  49. System.out.println(dept.getManager().getMgrName());
  50. }
  51. }

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. HttpClient忽略SSL证书

    今天公司项目请求一个接口地址是ip格式的,如:https://120.20.xx.xxx/xx/xx,报一个SSL的错: 由于之前请求的接口地址都是域名地址,如:https://www.xxx.com ...

  2. [20190929]bash使用bc计算的相关问题.txt

    [20190929]bash使用bc计算的相关问题.txt --//快放假没什么事情,使用bash写一些小程序,转化number到oracle number编码,使用bc计算功能,发现一些小问题--/ ...

  3. Shell—三剑客(grep、sed、awk)

    grep命令详解 文本搜索工具,根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行. 命令格式:grep  [options]  pattern  filename.gr ...

  4. [Go] gocron源码阅读-flag包实现命令行参数获取

    调用flag包可以方便的获取到命令行中传递的参数,比如可以实现类似nginx执行程序获取命令行参数执行不同操作的目标 package main import ( "flag" &q ...

  5. IntelliJ IDEA 创建动态的JavaWeb工程(五)

    1. 创建动态的web项目 如果创建项目后没有自动创建web文件夹,即没有自动创建 web.xml 及 index.jsp 文件,还可以通过IDEA编辑器中的File -- Project Struc ...

  6. https://ggaaooppeenngg.github.io/

    https://ggaaooppeenngg.github.io/

  7. django 报错Reverse for 'detail' with keyword arguments '{'pk': '2'}' not found. 1 pattern(s) tried: ['$post/(?P<pk>[0-9]+)/$']

    Django报错:Reverse for 'detail' with keyword arguments '{'pk': '2'}' not found. 1 pattern(s) tried: [' ...

  8. css3之水波效果

    这些效果可谓多种多样,当然用canvas.svg也都能实现奈何对这些有不熟悉(尴尬),不过咱们用css来写貌似也没想象中的那么难吧. 一  悬浮球水波效果 效果图 css .container { w ...

  9. Serializers 序列化组件——ModelSerializer详解

    前面学习Serializers用法时,发现所有的序列化都与我们的模型紧密相关. django_restframework也给我提供了跟模型紧密相关的序列化器——ModelSerializer. 它会根 ...

  10. chentos7 安装jdk1.8(二进制安装)

    首先下载jdk1.8 去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...