Skip to content

Commit

Permalink
<FEAT> README 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
davidolleh committed Nov 28, 2024
1 parent 841d5a9 commit a07d6ca
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,34 @@
- [x] 시간 조회, 추가, 삭제 기능 추가
- [x] DB 초기 값 설정
### 9단계
- [x] 해당 시간이 존재하는 예약이 남아있으르때, 시간 삭제 못하도록 예외처리
- [x] 해당 시간이 존재하는 예약이 남아있을 때, 시간 삭제 못하도록 예외처리
- [x] 중복된 시간(시간의 time값이 같은) DB에 저장하지 못하도록 예외처리
### 10단계

### 고민사항
- 프로젝트 구조:<br/>
[도메인 우선 vs 레이어 우선](https://codewithandrea.com/articles/flutter-project-structure/)
<br/>

우선 프로젝트 구조를 잘 가져가면 가져올 수 있는 효과가 무엇이 있는지 궁금합니다
미션처럼 크기가 작은 프로젝트에서는 레이어 구조 또한 괜찮은 방향 같지만 서비스 크기가
큰 앱을 개발하는데 있어서는 도메인 단위로 나누는 것이 프로젝트으 복잡성을 줄일 수 있게 되는거 같습니다.
그러나 도메인 단위로 나뉘게 된다면 중복된 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)
<br/>
스프링은 기술적으로 편의를 위해서?
데이터베이스 테이블과 Java의 class를 매핑해준 Jpa 기술을 사용하는 것으로 알고 있습니다.
@Entity라는 annotation을 사용하여 정의하는 Class는 Domain과의 간극이

- Entity 패키지를 따로 둔 이유? <br/>
Service는
Jpa의 @Entity라는 annotation을 사용하여 정의하는 Class는 Domain과의 간극이 존재한다고
생각합니다. 아직 이 간극에 대해 완벽히 알지 못하여서 Entity와 Domain을 혼돈해서 사용
하게 되는거 같습니다. 최소한 Service를 나눌때 Domain기준으로 나누고 싶은데
Entity(Table)단위로 나뉘게 되는 경향이 강한거 같습니다!
지금은 TimeService와 ReservationService가 나뉘어져 있지만
TimeService와 ReservationService가 하고 있는 역할은 결국 예약이라는 하나의 도메인에 속한다는 생각이 들어
이 둘을 하나의 ReservationService로 합할까 고민하게 되었습니다.

- Entity 패키지를 따로 둔 이유 <br/>
제가 따로 Entity 패키지를 분리한 이유는 Service, Repository, Contoller(controller에서 dto를 entity로 변환하기에) 모두다
Entity를 바라보기 때문에 분리하게 되었습니다.


## JDBC
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/roomescape/entity/Time.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package roomescape.entity;

import java.time.LocalTime;
import java.util.Objects;

public class Time {
private Long id;
Expand All @@ -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);
}
}
2 changes: 1 addition & 1 deletion src/test/java/roomescape/CoreStepTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class CoreStepTest {
@Test
void 팔단계() {
Map<String, String> params = new HashMap<>();
params.put("time", "10:00");
params.put("time", "14:00");

RestAssured.given().log().all()
.contentType(ContentType.JSON)
Expand Down

0 comments on commit a07d6ca

Please sign in to comment.