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;
}
@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;
@Entity
public class Library {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int b_id;
private String b_name;
@OneToOne
private Student stud;
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
<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>
<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();
em.getTransaction().begin();
Student st1 = new Student();
st1.setS_id(1);
st1.setS_name("Maxsu");
st1.setS_id(1);
st1.setS_name("Maxsu");
Student st2 = new Student();
st2.setS_id(2);
st2.setS_name("James");
st2.setS_id(2);
st2.setS_name("James");
em.persist(st1);
em.persist(st2);
em.persist(st2);
Library lib1 = new Library();
lib1.setB_id(101);
lib1.setB_name("Data Structure");
lib1.setStud(st1);
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);
lib2.setB_id(102);
lib2.setB_name("DBMS");
lib2.setStud(st2);
em.persist(lib1);
em.persist(lib2);
em.persist(lib2);
em.getTransaction().commit();
em.close();
emf.close();
emf.close();
学习来源:https://www.yiibai.com/jpa/jpa-one-to-one-mapping.html#article-start

浙公网安备 33010602011771号