zoukankan      html  css  js  c++  java
  • JPA笔记3 OneToOne

    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());
        }
    }
  • 相关阅读:
    Java中的多态polymorphism
    Java中的“继承”
    面向对象(Oriented Object Programing)的本质
    Java设计方法原则
    Motor Parameter
    Motor Vocabuary
    JD
    CAN
    多个TXT文件合成一个,输出到excel里
    正则表达式
  • 原文地址:https://www.cnblogs.com/zhuawang/p/11559430.html
Copyright © 2011-2022 走看看