공부한 내용
에러) 영속성 컨텍스트
- 에러) 영속성 컨텍스트
- 원인)
- 해결)
이 에러는 "unsaved transient instance"라는 메시지가 나오는데, 이는 아직 저장되지 않은 객체를 참조하고 있기 때문에 발생하는 것이다. 즉, giftcard1에서 store1을 참조하고 있는데 store1이 아직 영속성 컨텍스트에 저장되지 않았기 때문에 발생한 것이다.
해결 방법으로는, em.merge(store1)을 em.persist(store1)로 변경하면 된다. merge() 메소드는 객체를 병합하기 때문에 이미 영속성 컨텍스트에 있는 객체를 복사하여 저장하는 것이므로 이 문제를 해결할 수 없다. 따라서, store1 객체를 새로운 객체로 인식하여 저장하는 persist() 메소드를 사용해야 한다.
새로 알게 된 것) DB가 서로 다른 도메인들
- DB가 서로 다른 도메인들 → ID를 이용한 애그리거트 참조로 해결
- 아띠즈 프로젝트를 진행하며 채팅 DB로는 기존에 사용하고 있던 MySQL보단 MongoDB가 적합하다 판단했지만, 기존 DB 말고 다른 DB를 추가하는 건 시간 관계 상 후순위로 밀려, 그냥 MySQL을 사용했었다.
- 이때, 팀원들과 함께 논의했던 부분이 도메인들끼리 DB가 서로 달라도 괜찮은지에 대해서였는데, 이 부분에 대해 팀원분께서 좋은 글을 공유해주셨다!
- 위 글의 ID를 이용한 애그리거트 참조 부분을 확인해보면 아래와 같은 결론을 얻을 수 있다.
- 채팅과 다른 도메인들이 서로 db가 다르더라도, 객체로의 참조가 아닌 id로 연결되어 있다면 구현이 용이해보임
하루 정리
TIL 작성하기
BeachCombine
잔여 포인트 조회 API 구현
카드 목록 조회 API 구현
