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