diff --git a/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Address.java b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Address.java new file mode 100644 index 00000000..e16a021d --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Address.java @@ -0,0 +1,44 @@ +package com.hello.jpa.valuetype.ex00; + +import javax.persistence.Embeddable; + +@Embeddable +public class Address { + + private String city; + private String street; + private String zipcode; + + public Address() { + } + + public Address(String city, String street, String zipcode) { + this.city = city; + this.street = street; + this.zipcode = zipcode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getStreet() { + return street; + } + + public void setStreet(String address) { + this.street = address; + } + + public String getZipcode() { + return zipcode; + } + + public void setZipcode(String zipcode) { + this.zipcode = zipcode; + } +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/JpaMain.java b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/JpaMain.java new file mode 100644 index 00000000..bc63a426 --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/JpaMain.java @@ -0,0 +1,35 @@ +package com.hello.jpa.valuetype.ex00; + +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 { + Member member = new Member(); + member.setName("name"); + member.setHomeAddress(new Address("city", "address", "zipcode")); + member.setWorkPeriod(new Period()); + + em.persist(member); + + tx.commit(); + } catch (Exception e) { + tx.rollback(); + } finally { + em.close(); + } + + emf.close(); + } +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Member.java b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Member.java new file mode 100644 index 00000000..459cfc1e --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Member.java @@ -0,0 +1,60 @@ +package com.hello.jpa.valuetype.ex00; + +import javax.persistence.*; + +@Entity +public class Member { + + @Id @GeneratedValue + @Column(name = "MEMBER_ID") + private Long id; + + @Column(name = "USERNAME") + private String name; + + @Embedded + private Period workPeriod; + + @Embedded + private Address homeAddress; + + @Embedded + @AttributeOverrides({ + @AttributeOverride(name="city", column = @Column(name = "work_city")), + @AttributeOverride(name="street", column = @Column(name = "work_street")), + @AttributeOverride(name="zipcode", column = @Column(name = "work_zipcode")) + }) + private Address workAddress; + + 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 Period getWorkPeriod() { + return workPeriod; + } + + public void setWorkPeriod(Period workPeriod) { + this.workPeriod = workPeriod; + } + + public Address getHomeAddress() { + return homeAddress; + } + + public void setHomeAddress(Address homeAddress) { + this.homeAddress = homeAddress; + } +} diff --git a/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Period.java b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Period.java new file mode 100644 index 00000000..fd6f99ae --- /dev/null +++ b/hello-jpa/src/main/java/com/hello/jpa/valuetype/ex00/Period.java @@ -0,0 +1,27 @@ +package com.hello.jpa.valuetype.ex00; + +import javax.persistence.Embeddable; +import java.time.LocalDateTime; + +@Embeddable +public class Period { + + private LocalDateTime startDate; + private LocalDateTime endDate; + + public LocalDateTime getStartDate() { + return startDate; + } + + public void setStartDate(LocalDateTime startDate) { + this.startDate = startDate; + } + + public LocalDateTime getEndDate() { + return endDate; + } + + public void setEndDate(LocalDateTime endDate) { + this.endDate = endDate; + } +} diff --git a/hello-jpa/src/main/resources/META-INF/persistence.xml b/hello-jpa/src/main/resources/META-INF/persistence.xml index d36a1ba3..0cd5eb42 100644 --- a/hello-jpa/src/main/resources/META-INF/persistence.xml +++ b/hello-jpa/src/main/resources/META-INF/persistence.xml @@ -32,8 +32,9 @@ - com.hello.jpa.proxy.ex01.Parent - com.hello.jpa.proxy.ex01.Child + + + com.hello.jpa.valuetype.ex00.Member