스프링 부트 스타터(https://start.spring.io/))
스프링부트로 설정이 다 자동화되었다. persistence.xml없다.
쿼리파라미터 남기는 라이브러리. build.gradle에 등록.(개발단계에서만 사용하는 것을 권장함.
개발단계에서는 편하게 사용해도 된다. 운영시스템에 적용하려면 성능테스트 꼭 필요.(성능저하 이슈)
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
예제 설계에서 Member 엔티티에 사실 OrderList는 필요 없다. Order에서 Member 정보 참조해서 하면 됨.
* 참고: 회원이 주문을 하기 때문에, 회원이 주문리스트를 가지는 것은 얼핏 보면 잘 설계한 것 같지만, 객체 세
상은 실제 세계와는 다르다. 실무에서는 회원이 주문을 참조하지 않고, 주문이 회원을 참조하는 것으로 충분
하다. 여기서는 일대다, 다대일의 양방향 연관관계를 설명하기 위해서 추가했다.
1:1 관계인 경우 access가 많은 쪽을 연관관계 주인으로 정한다. (ex, ORDER)
MVC라도 간단한 회원조회 같은건 Controller에서 Repository로 바로 넘어가도록 설계(유연하게~~)
개발순서 : 리파지토리개발 -> 서비스개발 -> 테스트
1. web과 관련없는 도메인 개발 먼저,
2. 웹계층 개발,
3. api 개발
회원가입시 member엔티티말고 memberForm클래스 따로 만들어서 넘김(controller패키지)
그리고 validation 후 memberService 통해서 저장해줌.
엔티티는 순수한 상태로 남아 있어야 함(핵심 비즈니스로직만 있어야함).
화면을 위한 로직은 엔티티에 있으면 안됨. 그런거는 Form객체나 DTO 사용해야함(getter,setter만 있는거).
그래야 점점 커져도 유지보수성이 높아짐.
'Java > JPA' 카테고리의 다른 글
JPA 실전2편 - 주문조회 API (0) | 2023.12.12 |
---|---|
JPA 실전2편 - 회원 관련 API (0) | 2023.12.07 |
JPQL - Named 쿼리, 벌크연산 (0) | 2023.11.22 |
JPQL - fetch join(패치조인) - 적극활용 권장 (0) | 2023.11.21 |
JPQL-프로젝션,조인,조건식 (0) | 2023.11.21 |