diff --git a/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/JpaMain.java b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/JpaMain.java new file mode 100644 index 00000000..476c94da --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/JpaMain.java @@ -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(); + } +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Locker.java b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Locker.java new file mode 100644 index 00000000..c679800c --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Locker.java @@ -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; +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Member.java b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Member.java new file mode 100644 index 00000000..892bb090 --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Member.java @@ -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; + } +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/RoleType.java b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/RoleType.java new file mode 100644 index 00000000..f481db1c --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/RoleType.java @@ -0,0 +1,6 @@ +package com.hello.jpa.relationmapping.ex02.domain; + +public enum RoleType { + + USER, ADMIN +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Team.java b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Team.java new file mode 100644 index 00000000..feeda24a --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/relationmapping/ex02/domain/Team.java @@ -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 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 getMembers() { + return members; + } + + public void setMembers(List members) { + this.members = members; + } +} diff --git a/hello-jpa/src/main/resources/META-INF/persistence.xml b/hello-jpa/src/main/resources/META-INF/persistence.xml index 92a90585..e6043e37 100644 --- a/hello-jpa/src/main/resources/META-INF/persistence.xml +++ b/hello-jpa/src/main/resources/META-INF/persistence.xml @@ -11,10 +11,13 @@ - com.hello.jpa.relationmapping.ex01.domain.Item - com.hello.jpa.relationmapping.ex01.domain.Member - com.hello.jpa.relationmapping.ex01.domain.Order - com.hello.jpa.relationmapping.ex01.domain.OrderItem + + + + + com.hello.jpa.relationmapping.ex02.domain.Member + com.hello.jpa.relationmapping.ex02.domain.Team + com.hello.jpa.relationmapping.ex02.domain.Locker