#30 jpa basic: relation mapping - one to one

This commit is contained in:
haerong22
2023-01-24 20:13:10 +09:00
parent 7b69afd796
commit b3d8efc094
6 changed files with 160 additions and 4 deletions

View File

@@ -0,0 +1,28 @@
package com.hello.jpa.relationmapping.ex02;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
public class JpaMain {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();
}
}

View File

@@ -0,0 +1,18 @@
package com.hello.jpa.relationmapping.ex02.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Locker {
@Id @GeneratedValue
private Long id;
private String name;
@OneToOne(mappedBy = "locker")
private Member member;
}

View File

@@ -0,0 +1,54 @@
package com.hello.jpa.relationmapping.ex02.domain;
import javax.persistence.*;
@Entity
public class Member {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
@Column(name = "USERNAME")
private String name;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
@OneToOne
@JoinColumn(name = "LOCKER_ID")
private Locker locker;
public Locker getLocker() {
return locker;
}
public void setLocker(Locker locker) {
this.locker = locker;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
}

View File

@@ -0,0 +1,6 @@
package com.hello.jpa.relationmapping.ex02.domain;
public enum RoleType {
USER, ADMIN
}

View File

@@ -0,0 +1,47 @@
package com.hello.jpa.relationmapping.ex02.domain;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
@Entity
public class Team {
@Id @GeneratedValue
@Column(name = "TEAM_ID")
private Long id;
private String name;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
public void addMember(Member member) {
member.setTeam(this);
members.add(member);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Member> getMembers() {
return members;
}
public void setMembers(List<Member> members) {
this.members = members;
}
}

View File

@@ -11,10 +11,13 @@
<!-- <class>com.hello.jpa.entitymapping.ex01.domain.OrderItem</class>-->
<!-- <class>com.hello.jpa.relationmapping.ex00.Member</class>-->
<!-- <class>com.hello.jpa.relationmapping.ex00.Team</class>-->
<class>com.hello.jpa.relationmapping.ex01.domain.Item</class>
<class>com.hello.jpa.relationmapping.ex01.domain.Member</class>
<class>com.hello.jpa.relationmapping.ex01.domain.Order</class>
<class>com.hello.jpa.relationmapping.ex01.domain.OrderItem</class>
<!-- <class>com.hello.jpa.relationmapping.ex01.domain.Item</class>-->
<!-- <class>com.hello.jpa.relationmapping.ex01.domain.Member</class>-->
<!-- <class>com.hello.jpa.relationmapping.ex01.domain.Order</class>-->
<!-- <class>com.hello.jpa.relationmapping.ex01.domain.OrderItem</class>-->
<class>com.hello.jpa.relationmapping.ex02.domain.Member</class>
<class>com.hello.jpa.relationmapping.ex02.domain.Team</class>
<class>com.hello.jpa.relationmapping.ex02.domain.Locker</class>
<properties>
<!-- 필수 속성 -->