JPA(Java Persistence API)学习九(一对一映射)

1.概述

    一对一映射映射表示一个单值关联,其中一个实体的实例与另一个实体的实例相关联。

    在这种类型的关联中,源实体的一个实例可以映射到目标实体的一个实例。

 

2.@OneToOne示例

   第一步:创建一个实体类Student.java,含学生ID(s_id)和学生姓名(s_name)。

                 代码:

                    import javax.persistence.*;

                    @Entity

                    public class Student {
                      @Id
                     @GeneratedValue(strategy = GenerationType.AUTO)
                     private int s_id;
                     private String s_name;
                  }
     第二步:创建另一个实体类Library.java,其中包含book id(b_id),book name(b_name)
                 以及标记有@OneToOne注释的学生类型对象。
 
                 代码:
                   import javax.persistence.*;
 
                  @Entity
                  public class Library {
                     @Id
                     @GeneratedValue(strategy = GenerationType.AUTO)
                     private int b_id;
                     private String b_name;
                    @OneToOne
                    private Student stud;
 
                 }
       第三步:将实体类和数据库配置映射到persistence.xml文件中
               <?xml version="1.0" encoding="UTF-8"?>
              <persistence version="2.1"
                      xmlns="http://xmlns.jcp.org/xml/ns/persistence"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
                                                         http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
                     <persistence-unit name="Book_issued">
                          <class>com.yiibai.mapping.Student</class>
                          <class>com.yiibai.mapping.Library</class>
                          <properties>
                              <property name="javax.persistence.jdbc.driver"
                                       value="com.mysql.jdbc.Driver" />
                              <property name="javax.persistence.jdbc.url"
                                        value="jdbc:mysql://localhost:3306/testdb?serverTimezone=UTC" />
                             <property name="javax.persistence.jdbc.user" value="root" />
                             <property name="javax.persistence.jdbc.password"
                                        value="123456" />
                             <property name="eclipselink.logging.level" value="SEVERE" />
                             <property name="eclipselink.ddl-generation"
                                        value="create-or-extend-tables" />
                         </properties>
                    </persistence-unit>
               </persistence>
 
3.应用
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("Book_issued");
   EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    Student st1 = new Student();
    st1.setS_id(1);
    st1.setS_name("Maxsu");
    Student st2 = new Student();
    st2.setS_id(2);
    st2.setS_name("James");
    em.persist(st1);
    em.persist(st2);
    Library lib1 = new Library();
    lib1.setB_id(101);
    lib1.setB_name("Data Structure");
    lib1.setStud(st1);
    Library lib2 = new Library();
    lib2.setB_id(102);
    lib2.setB_name("DBMS");
    lib2.setStud(st2);
    em.persist(lib1);
    em.persist(lib2);
    em.getTransaction().commit();
    em.close();
    emf.close();
 
学习来源:https://www.yiibai.com/jpa/jpa-one-to-one-mapping.html#article-start
 
posted @ 2020-09-08 16:43  小窝蜗  阅读(174)  评论(0)    收藏  举报