JPA
- 도메인 모델에 대하여
백엔드 서버 아키텍처 — Domain Layer1. Domain Layer와 DDD
도메인 레이어의 유형, DDD의 개요
tech.junhabaek.net
도메인을 추상적으로 표현하고 DDD에 대해 여러 비유들이 있는데 너무 추상적이고 이해가 잘 가지않았다. 일단 지금 내가 생각하는 도메인 모델 패턴은 도메인 객체가 행위까지 포함하는 것을 말하는 것 같다.
- Entity를 그대로 모델로쓰지 말 것. DTO에 옮겨담아서 쓸 것. 특히 API 만들때
- @Transactional 어노테이션이 붙은 메소드는 호출시 디비 커넥션이 열리고 메소드 종료시 예외가 없다면 트랜잭션 commit을 한다. 예외가 발생하면 롤백한다.
- 변경 감지(dirty check)와 병합
준영속 엔티티는 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 임의로 생성한 엔티티 객체도 기존 식별자를 가지고 있으면 준영속 엔티티로 볼 수 있다.
병합은 엔티티 식별자를 통해 컨텍스트에서 영속 엔티티를 찾고 변경이 있다면 수정한다.
변경감지를 통해 데이터를 변경할 때에는 변경된 속성만 선택해서 변경할 수 있지만, 병합을 통한 변경은 모든 속성을 변경시키므로 병합시 값이 비어있으면 null 업데이트할 위험이 있다.(병합은 모든 필드를 교체한다)
때문에 엔티티를 변경할 떄는 항상 변경 감지를 사용할 것!!!
- 컨트롤러 레벨에서는 엔티티를 의존하지 않고 서비스 레벨 이하로 위임하는 것이 좋다.(테스트, @Transactinal 에 의한 Entity 관리 차원으로)
- 단순한 조회 등 간단한 기능이면 컨트롤러에서 레파지토리를 그냥 호출해도 괜찮다.
- DTO의 위치
https://www.inflearn.com/questions/24222
DTO 프로젝트 위치 관련 - 인프런 | 질문 & 답변
안녕하세요 orderSimpleQueryDTO의 경우에는 특수한 쿼리를 위한 경로에 위치시켰는데 DTO를 프로젝트에서 일반적으로 어디에 위치시키는지 궁금합니다. 강의를 들으면서 팀 프로젝트를 같이 진행하
www.inflearn.com
후기
정말 일단 한번 완강하자는 마음으로 아래 강의를 4일만에 완강 했다, 중간중간 의문이 생기는 부분들을 그냥 넘어가는게 힘들었지만 그래도 전체적인 흐름을 아니까 JPA에 대한 느낌을 잡을 수 있었던것같다. 내일부터는 기본강의를 들으면서 JPA에 대해 더 깊게 알아가면서 공부해야겠다.
또 Java를 늘 주먹구구식으로 그때그때 검색해가며 공부하다보니 최근들어 더 부족함을 많이 느꼈는데, 그래서 드디어 '자바의 정석' 을 사버렸다,, 좀 늦은감이있지만 지금이라도 기초를다지면 훨씬 더 성장할 수 있지 않을까 라는 기대를 해본다.,
'TIL' 카테고리의 다른 글
[TIL 2022-2-10]JPA 기본, 피보나치 (0) | 2022.02.10 |
---|---|
[TIL 2022-2-8] HTTP 헤더 공부 (0) | 2022.02.08 |
[TIL 2022-2-5] JPA 공부 (0) | 2022.02.05 |
[TIL 2022-2-4] Spring JPA 공부 시작!! (0) | 2022.02.05 |
[TIL 2022-2-2] 로그인 페이지 뷰 구현 + 생성자에 따른 @ModelAttribute의 동작 방법 (0) | 2022.02.02 |