본문 바로가기
프로젝트/준비

Spring, JPA 기억할 것

by hk27 2022. 2. 5.

보안을 위한 정보 정리
1. PATH Variable로 Id가 넘어오면 service 단에서 권한이 있는지 검사한다. 
2. 컨트롤러에서 엔티티 반환하지말고 dto 반환 + 엔티티 외부 노출 금지

프로젝트 고려할 것 정리
1. 도메인 패키지 내에서도 패키지를 분리함. ex, item
2. 저장은 객체를 반환하고, 업데이트는 반환하지 않음'
3. 간단한 것은 return에서 바로 찾아서 반환 
4. 레포에서 id 를 set함 
5. 레포에는 테스트를 위한 clearStore 메소드를 두자 
6. 컨트롤러 제일 앞에는 /가 들어간다. 
7. 상품 저장 후 바로 view로 보내지 말고 redirect한다. (새로코침 문제 해결): RPG - 이것은 API에는 필요X
8. jpql은 보통 소문자로 쿼리를 작성하는 것 같음. 
9. 테스트할 때 em.flush() em.clear() 
10. 테이블이나 컬럼이 생략되면 카멜 -> 언더스코어로 매핑하는 코드
<property name="hibernate.ebj.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
11. DTO는 컨스트럭터에 static class로 만듦. 보통 @Data, @AllArgsConstructor는 넣는듯
12. object로 감싸서 넣는다 -> 유연성
13. JPA에서 엔티티를 저장할 때 모든 연관된 엔티티는 영속 상태여야 한다. (174p)
14. 연관된 엔티티 삭제 못함! 그전에 setTeam(null)으로 연관관계 끊기. FK 제약조건때문 - 신기하게 사이에 flush 안해줘도 됨. FK 제약조건 검사를 삭제할 때 하는듯. 
15. 리포 -> 컨트롤러 보는 방향은 절대 안됨! 컨트롤러 -> 리포는 많이 보는듯! 이렇게 해도 됨.  (근데 왜 서비스를 안보고 리포를 볼까). 의존관계는 컨트롤러 => 서비스 => 레포 한방향으로 흐르게
16. dto는 엔티티 참조해도됨 
17. merge는 파라미터로 넘어온 준영속 엔티티를 사용해 새롭게 병합된 영속 상태의 엔티티 반환하니 받을 때 member = em.merge(member)로 받자. 
18. 양방향 연관관계 하나당 연관관계 편의 메소드 하나 만들었는지 확인하기. changeTeam으로 원래 연결된게 있었다면 remove해주기.
19. 양방향 매핑 시에는 toString과 JSON 생성 라이브러리를 사용하면 안 됨
20. @RequestParam(value = "", defaultValue="0") int age // defaultValue는 String으로 넣어야함


jpa class 순서
em.find(Team.class, "team1");
em.createQuery("select ..... ", Order.class).getResultList

 

컬렉션 조회 최적화 순서

 

 

'프로젝트 > 준비' 카테고리의 다른 글

Spring, JPA 기억해야 할 코드  (0) 2022.02.05

댓글