일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 금융감독원 민원신청
- 에이치엘비
- 해시
- 자바
- 금감원
- 코드스테이츠 합격
- 보험금 지급거절
- 메서드
- 백내장
- 백내장 다초점렌즈 삽입술
- CodeState 후기
- 코드스테이츠 백엔드 후기
- 코드스테이츠 합격 후기
- 금융감독원
- 겜스고
- Spring
- 코드스테이츠 백엔드 부트캠프 합격
- 코드스테이츠 부트캠프
- HLB
- 금감원 백내장 민원
- 코테 합격후기
- codestates 국비지원 1기 합격 후기
- Code States 백엔드 합격 후기
- 코드 스테이츠 백엔드 교육과정
- Java
- Gamsgo
- 코드스테이츠 부트캠프 합격 후기
- 코드스테이츠 백엔드 교육과정
- 백내장 금감원
- 백준 알고리즘
Archives
- Today
- Total
개발하는 동그리
[스프링 부트와 JPA 활용] 2편 본문
반응형
[핵심 내용]
- Entity를 외부에 노출 하지 말 것 (DTO 사용할 것) ⭐⭐⭐⭐⭐
- 의존관계는 반드시 한방향으로 흐르게 만들 것 ( order -> service -> repository ) ⭐⭐⭐⭐
- Command 와 Quary를 분리
- Transaction이 연결되어 있으면, 영속성 컨텍스트에서 조회, 수정 ~
- DTO 생성 이유는 Entity와 관계를 끊어주기 위함 ( One To Many 주의 )
회원 등록/ 수정/ 조회 API
- API 개발에서는 핸들러 메서드 생성시 필요에 맞게 DTO 생성해서 사용
- 리턴값, 입력값의 클래스(DTO)를 새로 생성해서 사용
- 필요한 필드값만 사용할 수 있고, 응답값의 key값도 변경 가능
- 조회시 응답 객체를 조회할 멤버 List를 한번 감싸서 다른 필드값을 넣어줄 수 있다. ( 유연성 👍 ) 그렇지 않으면 json형태로 바로 출력됨. 추가 수정시 (유연성이 낮아짐 )
지연 로딩
- 엔티티를 직접 노출할 떄에는 양방향 연관관계가 걸렸을 때는 한 곳에 @JsonIgnore 처리 (무한루프 방지)
- 지연로딩을 피하기 위해 (fetch = LAZY -> EAGER ) 변경하지 말것!! ⭐⭐⭐
성능 최적화 ( ? To One )⭐⭐⭐⭐⭐
- DTO 클래스를 생성하고, 필요한 필드값만 포함한 생성자를 만들어서 사용된다.
- join fetch를 사용해서 JPQL로 보내면 쿼리 한번으로 원하는 정보를 다 가져올 수 있다. (LAZY 무시)
- JPA -> DTO 변환 ( 최적화가 필요할 떄 사용 )
- Entity와 DTO의 관계도 끊고 JPA를 이용해서 변환한다. ( 재활용이 어렵지만, 최적화는 👍 )
성능 최적화 ( One To Many )⭐⭐⭐⭐⭐
- DTO 생성 이유는 Entity와 관계를 끊어주기 위함 ( One To Many 주의 )
- DTO 사용시 쿼리가 너무 많아진다. 그러므로 join fetch 사용하면 쿼리 한번으로 가능
- Entity 외부 노출 주의
- JPA에서 SQL에 distinct를 추가해서 중복을 막아준다.
- 단점! ( 페이징이 불가능 )
- 컬렉션 패치 조인은 1개밖에 사용할 수 없다.
반응형
'IT 정보 > Spring' 카테고리의 다른 글
[Test] Mockito (14) | 2022.07.14 |
---|---|
[Test] TDD (Test-Driven Development) (12) | 2022.07.14 |
[Spring] JUnit Test 기능 (18) | 2022.07.12 |
[Spring] Spring MVC - 예외 처리 (38) | 2022.07.04 |
[Spring] Spring MVC - 서비스 계층 (18) | 2022.07.04 |