diff --git a/README.md b/README.md
index 9409a991..8a756700 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
- [x] 시간 조회, 추가, 삭제 기능 추가
- [x] DB 초기 값 설정
### 9단계
-- [x] 해당 시간이 존재하는 예약이 남아있으르때, 시간 삭제 못하도록 예외처리
+- [x] 해당 시간이 존재하는 예약이 남아있을 때, 시간 삭제 못하도록 예외처리
- [x] 중복된 시간(시간의 time값이 같은) DB에 저장하지 못하도록 예외처리
### 10단계
@@ -14,16 +14,26 @@
- 프로젝트 구조:
[도메인 우선 vs 레이어 우선](https://codewithandrea.com/articles/flutter-project-structure/)
-
+우선 프로젝트 구조를 잘 가져가면 가져올 수 있는 효과가 무엇이 있는지 궁금합니다
+미션처럼 크기가 작은 프로젝트에서는 레이어 구조 또한 괜찮은 방향 같지만 서비스 크기가
+큰 앱을 개발하는데 있어서는 도메인 단위로 나누는 것이 프로젝트으 복잡성을 줄일 수 있게 되는거 같습니다.
+그러나 도메인 단위로 나뉘게 된다면 중복된 Entity(테이블이 서로 연관되어 있을 가능성이 크기 )에 대한 관리를 어떻게 하는지 궁금합니다!
[Repository 계층, 도메인과 영속성 엔티티 사이의 간극](https://kokodakadokok.tistory.com/entry/Repository-%EA%B3%84%EC%B8%B5-%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-%EC%97%94%ED%8B%B0%ED%8B%B0-%EC%82%AC%EC%9D%B4%EC%9D%98-%EA%B0%84%EA%B7%B9-%EB%A7%A4%EA%BE%B8%EA%B8%B0)
스프링은 기술적으로 편의를 위해서?
데이터베이스 테이블과 Java의 class를 매핑해준 Jpa 기술을 사용하는 것으로 알고 있습니다.
-@Entity라는 annotation을 사용하여 정의하는 Class는 Domain과의 간극이
-
-- Entity 패키지를 따로 둔 이유?
-Service는
+Jpa의 @Entity라는 annotation을 사용하여 정의하는 Class는 Domain과의 간극이 존재한다고
+생각합니다. 아직 이 간극에 대해 완벽히 알지 못하여서 Entity와 Domain을 혼돈해서 사용
+하게 되는거 같습니다. 최소한 Service를 나눌때 Domain기준으로 나누고 싶은데
+Entity(Table)단위로 나뉘게 되는 경향이 강한거 같습니다!
+지금은 TimeService와 ReservationService가 나뉘어져 있지만
+TimeService와 ReservationService가 하고 있는 역할은 결국 예약이라는 하나의 도메인에 속한다는 생각이 들어
+이 둘을 하나의 ReservationService로 합할까 고민하게 되었습니다.
+
+- Entity 패키지를 따로 둔 이유
+제가 따로 Entity 패키지를 분리한 이유는 Service, Repository, Contoller(controller에서 dto를 entity로 변환하기에) 모두다
+Entity를 바라보기 때문에 분리하게 되었습니다.
## JDBC
diff --git a/src/main/java/roomescape/entity/Time.java b/src/main/java/roomescape/entity/Time.java
index b169018d..f8bebf14 100644
--- a/src/main/java/roomescape/entity/Time.java
+++ b/src/main/java/roomescape/entity/Time.java
@@ -1,6 +1,7 @@
package roomescape.entity;
import java.time.LocalTime;
+import java.util.Objects;
public class Time {
private Long id;
@@ -26,4 +27,17 @@ public Long getId() {
public LocalTime getTime() {
return time;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ Time time = (Time) o;
+ return Objects.equals(id, time.id);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id);
+ }
}
diff --git a/src/test/java/roomescape/CoreStepTest.java b/src/test/java/roomescape/CoreStepTest.java
index e16cae2e..87bf9261 100644
--- a/src/test/java/roomescape/CoreStepTest.java
+++ b/src/test/java/roomescape/CoreStepTest.java
@@ -25,7 +25,7 @@ public class CoreStepTest {
@Test
void 팔단계() {
Map params = new HashMap<>();
- params.put("time", "10:00");
+ params.put("time", "14:00");
RestAssured.given().log().all()
.contentType(ContentType.JSON)