본문 바로가기

Java/JPA

JPA실전1 정리

스프링 부트 스타터(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만 있는거).

그래야 점점 커져도 유지보수성이 높아짐.