diff --git a/topic6/samples/spring-data-sample/pom.xml b/topic6/samples/spring-data-sample/pom.xml
index 66a3854..10d1416 100644
--- a/topic6/samples/spring-data-sample/pom.xml
+++ b/topic6/samples/spring-data-sample/pom.xml
@@ -1,47 +1,65 @@
 
 
-	4.0.0
-	
-		org.springframework.boot
-		spring-boot-starter-parent
-		2.2.2.RELEASE
-		 
-	
-	kma.topic6
-	spring-data-sample
-	0.0.1-SNAPSHOT
-	spring-data-sample
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    4.0.0
+    
+        org.springframework.boot
+        spring-boot-starter-parent
+        2.2.2.RELEASE
+         
+    
+    kma.topic6
+    spring-data-sample
+    0.0.1-SNAPSHOT
+    spring-data-sample
 
-	
-		1.8
-	
+    
+        1.8
+    
 
-	
-		
-			org.springframework.boot
-			spring-boot-starter-data-jpa
-		
+    
+        
+            org.springframework.boot
+            spring-boot-starter-data-jpa
+        
 
-		
-			org.projectlombok
-			lombok
-			true
-		
+        
+            org.projectlombok
+            lombok
+            true
+        
 
-		
-			com.h2database
-			h2
-		
-	
+        
+            com.h2database
+            h2
+        
 
-	
-		
-			
-				org.springframework.boot
-				spring-boot-maven-plugin
-			
-		
-	
+        
+            org.springframework.boot
+            spring-boot-starter-test
+            test
+        
+        
+            org.dbunit
+            dbunit
+            2.6.0
+			test
+        
+        
+            com.github.springtestdbunit
+            spring-test-dbunit
+            1.3.0
+			test
+        
+    
+
+    
+        
+            
+                org.springframework.boot
+                spring-boot-maven-plugin
+            
+        
+    
 
 
diff --git a/topic6/samples/spring-data-sample/src/main/java/kma/topic6/springdatasample/embedded/ApartmentEntity.java b/topic6/samples/spring-data-sample/src/main/java/kma/topic6/springdatasample/embedded/ApartmentEntity.java
index e033061..067a515 100644
--- a/topic6/samples/spring-data-sample/src/main/java/kma/topic6/springdatasample/embedded/ApartmentEntity.java
+++ b/topic6/samples/spring-data-sample/src/main/java/kma/topic6/springdatasample/embedded/ApartmentEntity.java
@@ -33,7 +33,7 @@ public class ApartmentEntity {
     @Column(name = "number")
     private String number;
 
-    @OneToMany(fetch = FetchType.EAGER, mappedBy = "apartment")
+    @OneToMany(fetch = FetchType.LAZY, mappedBy = "apartment")
     private List billings;
 
 }
diff --git a/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/AbstractTest.java b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/AbstractTest.java
new file mode 100644
index 0000000..fe51187
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/AbstractTest.java
@@ -0,0 +1,9 @@
+package kma.topic6.springdatasample;
+
+import org.springframework.boot.test.context.SpringBootTest;
+
+@MySpringTestListeners
+@SpringBootTest
+public class AbstractTest {
+
+}
diff --git a/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/MySpringTestListeners.java b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/MySpringTestListeners.java
new file mode 100644
index 0000000..f686c60
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/MySpringTestListeners.java
@@ -0,0 +1,35 @@
+package kma.topic6.springdatasample;
+
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener;
+import org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener;
+import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
+import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
+import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
+
+import com.github.springtestdbunit.DbUnitTestExecutionListener;
+
+@TestExecutionListeners({
+    DependencyInjectionTestExecutionListener.class,
+    DirtiesContextTestExecutionListener.class,
+    DbUnitTestExecutionListener.class,
+    TransactionalTestExecutionListener.class,
+    MockitoTestExecutionListener.class,
+    ResetMocksTestExecutionListener.class,
+    SqlScriptsTestExecutionListener.class
+})
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+public @interface MySpringTestListeners {
+
+}
diff --git a/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/UserServiceTest.java b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/UserServiceTest.java
new file mode 100644
index 0000000..a3d6746
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/java/kma/topic6/springdatasample/UserServiceTest.java
@@ -0,0 +1,74 @@
+package kma.topic6.springdatasample;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.jdbc.Sql;
+
+import com.github.springtestdbunit.annotation.DatabaseSetup;
+import com.github.springtestdbunit.annotation.DatabaseTearDown;
+import com.github.springtestdbunit.annotation.ExpectedDatabase;
+import com.github.springtestdbunit.assertion.DatabaseAssertionMode;
+
+@DatabaseSetup("/UserService/init.xml")
+@DatabaseTearDown("/clean-up.xml")
+class UserServiceTest extends AbstractTest {
+
+    @Autowired
+    private UserService service;
+
+//    @Test
+    @Sql(value = "/UserService/clean-up.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
+    @Sql("/UserService/init.sql")
+    void shouldSelectUserById() {
+        assertThat(service.getUserById(1))
+            .returns(1, UserEntity::getId)
+            .returns("email1@example.com", UserEntity::getEmail);
+    }
+
+//    @Test
+    @Sql("/UserService/init.sql")
+    @Sql(value = "/UserService/clean-up.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
+    void shouldSelectAllUsers() {
+        assertThat(service.findAllUsers())
+            .hasSize(3);
+    }
+
+//    @Test
+    @Sql("/UserService/init.sql")
+    @Sql(value = "/UserService/clean-up.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
+    void shouldCreateUser() {
+        service.createUser("new-user", "new-user", "email4@example.com");
+
+        assertThat(service.countUsers()).isEqualTo(4L);
+    }
+
+    @Test
+    void shouldSelectUserById_dbunit() {
+        assertThat(service.getUserById(1))
+            .returns(1, UserEntity::getId)
+            .returns("email123@dummy.com", UserEntity::getEmail);
+    }
+
+    @Test
+    void shouldSelectAllUsers_dbunit() {
+        assertThat(service.findAllUsers())
+            .hasSize(3);
+    }
+
+    @Test
+    @ExpectedDatabase(value = "/UserService/expectedUsersAfterCreateNew.xml", assertionMode = DatabaseAssertionMode.NON_STRICT)
+    void shouldCreateUser_dbunit() {
+        service.createUser("new-user", "new-user", "email4@example.com");
+    }
+
+    @Test
+    @ExpectedDatabase(value = "/UserService/expectedUsersAfterCreateNew.xml", assertionMode = DatabaseAssertionMode.NON_STRICT)
+    void shouldCreateUser_dbunit1() {
+        service.createUser("new-user", "new-user", "email4@example.com");
+    }
+
+
+}
diff --git a/topic6/samples/spring-data-sample/src/test/resources/UserService/clean-up.sql b/topic6/samples/spring-data-sample/src/test/resources/UserService/clean-up.sql
new file mode 100644
index 0000000..0c43117
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/resources/UserService/clean-up.sql
@@ -0,0 +1 @@
+delete from user;
diff --git a/topic6/samples/spring-data-sample/src/test/resources/UserService/expectedUsersAfterCreateNew.xml b/topic6/samples/spring-data-sample/src/test/resources/UserService/expectedUsersAfterCreateNew.xml
new file mode 100644
index 0000000..19e2f09
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/resources/UserService/expectedUsersAfterCreateNew.xml
@@ -0,0 +1,7 @@
+
+    
+    
+    
+
+    
+
diff --git a/topic6/samples/spring-data-sample/src/test/resources/UserService/init.sql b/topic6/samples/spring-data-sample/src/test/resources/UserService/init.sql
new file mode 100644
index 0000000..c9d920f
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/resources/UserService/init.sql
@@ -0,0 +1,4 @@
+insert into user(first_name, last_name, email)
+values ('name1', 'lname1', 'email1@example.com'),
+       ('name2', 'lname2', 'email2@example.com'),
+       ('name2', 'lname2', 'email2@example.com');
diff --git a/topic6/samples/spring-data-sample/src/test/resources/UserService/init.xml b/topic6/samples/spring-data-sample/src/test/resources/UserService/init.xml
new file mode 100644
index 0000000..7bcf9ba
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/resources/UserService/init.xml
@@ -0,0 +1,5 @@
+
+    
+    
+    
+
diff --git a/topic6/samples/spring-data-sample/src/test/resources/clean-up.xml b/topic6/samples/spring-data-sample/src/test/resources/clean-up.xml
new file mode 100644
index 0000000..0c7343a
--- /dev/null
+++ b/topic6/samples/spring-data-sample/src/test/resources/clean-up.xml
@@ -0,0 +1,3 @@
+
+    
+