김승은
- Service Layer에서 예외 처리를 어떻게 다루었는지 공유, 그리고 service의 단위 테스트 중 예외 테스트를 어떻게 진행해야 할지에 대한 이야기
- 유석님은 service의 parameter로 들어오는 값에 대해서 type error만 controller에서 처리하고, 비즈니스 로직에 해당하는 존재하지 않는 id 등은 service에서 처리함.
- MySql 스키마에서 foreign key, on delete cascade 등을 비즈니스 로직으로 처리.
박상혁
- MySql과 같이 EnumType을 설정할 수 있는 dbms도 있지만 그렇지 않은 dbms또한 많다. DB레벨에서 Enum Type을 사용할 경우 추후 데이터 이전 등의 작업을 할 때 문제가 생길 수 있다. 따라서 Enum Type은 코드 레벨에서만 사용하고 Database에 저장할 때에는 string type으로 전환시켜 사용할 필요가 있다.
- 인텔리제이서 빌드 시 요상한 에러가 뜰 때가 있는데, 그럴 때 대처법
- Customer VS Voucher, 1 : N 인가 N : M 인가?? ⇒ 구현 요구사항의 애매함으로 인해 생긴 토론. 추후 팀 프로젝트 때에는 우리끼리 요구사항을 잘 맞춘다면 스무스하게 진행되지 않을까 싶다.
정경일
- 생성자 예외처리
- 최종 데이터 검증은 백엔드에서 하는 것이 옳은 것같다.
- 생성에 대한 책임을 밖에서 대신 처리하는 것이 아닌 class 생성자가 처리하는 것이 맞는 것같다.
- HTTP 메서드
- 기본 메서드 외에도 OPTIONS는 중요하니 OPTIONS 메서드를 사용할 경우 http 메시지는 어떻게 되는지 공부하자.
정현서
- foreign key 사용과 delete 현업에서는 foreign key를 잘 지정하지 않거나, delete를 해도 실제 값을 지우는게 아니라 delete되었다고 표시 정도만 하는 경우가 있다한다. foreign key를 지정하면 테스트할 때 꼬여서 문제가 생기는 경우가 있다.
- 과제를 하다보니 voucher service와 customer service를 명확하게 분리하기 힘든 경우가 있는데 이럴 때는 어떻게 해야할까?
- 피드백 1) voucher wallet service 등 service를 하나 더 만들어서 분리시킨다.
- 피드백 2) 본인이 생각했을 때 더 적합한 쪽에 위치시킨다.
- DB에서 enum type 사용
- 피드백 1) 코드에서는 enum으로 관리해도 DB에는 string type으로 저장한다.
- 피드백 2) 코드 상의 enum에 들어가는 값들을 DB의 attribute로 각각 지정한다.
홍유석
- var 사용을 지양하자
var는 가독성을 떨어뜨리므로 사용을 지양하자
- DTO를 사용하자
- OCP를 위반하게 되겠군요!
Entity를 DTO처럼 사용할경우 Entity(DB 스키마)의 변경은 다른 영역(ex. view)도 변경을 발생시킨다
- json to object, object to json
- @Transactional
🤔 싱글 DML(insert, update, delete)만 있는 상황에서 @Transactional을 사용할 필요가 있을까요?