본문 바로가기

개발 이론/JPA9

[JPA] JPA 와 Hibernate , Spring Data JPA JPA를 공부하다보니 Hibernate라는 개념이 자주 나왔다. 예전에는 아 그냥 JPA하면 Hibernate라는 개념이 쓰이는 구나 했지만 요즘은 하나를 공부해도 해당 클래스의 시작점을 보고 싶다. 그래서 JPA와 Hibernate에 대해 공부하게 되었다 JPA는 기술 명세이다 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스 여기서 인터페이스라는 점을 주목해야한다. 특정기능을 하는 라이브러리가 아니라 관계형 데이터베이스를 어떻게 사용해야하지는 정의하는 하나의 방법인 것이다. JPA를 정의한 javax.persistence 패키지를 보면 Interface, enum, exception,annotaion등 다양한 것들로 구성되어있다 그렇다면 Hibernate는 무엇이냐? JPA.. 2023. 11. 10.
[JPA] JPA엔티티에 기본생성자가 필요하다? JPA는 엔티티에 기본생성자, 즉 매개변수를 받지 않는 생성자를 만드는 것을 강제하고 있다. 물론 기본 생성자 없이도 정상적으로 작동하는 경우가 있지만 공식 스펙에따르면 기본생성자가 있어야한다고 기재되어있다. 그렇다면 왜 기본 생성자를 만들도록 강제할까?? 앞서 기본 생성자를 강제하는 경우 @RequestBody와 @ModelAttribute에 대해서 알아봤다. 그중에서도 @RequestBody는 Reflection을 이용해 필드, 메서드 등의 클래스의 모든 정보에 접근하여 매핑해주었다. 다만 Reflection은 생성자 호출을 할 수없었다. 그래서 기본생성자를 강제하였다. https://haebing.tistory.com/72 [Spring] @ModelAttribute와 @RequestBody에 대해.. 2023. 11. 10.
[JPA] API 개발시 주의사항 및 성능 최적화 API개발시 주의사항 요청값으로 엔티티를 직접 받지 말자 문제점 - 엔티티에 프레젠테이션 계층을 위한 로직이 추가된다 - 실무에서 회원 엔티티를 위한 다양한 API가 만들어지는데 각각의 API를 위한 모든 요청 요구사항을 담기 어렵다 - 엔티티가 변경되면 API스펙이 변한다 따라서 별도의 DTO로 파라미터를 받는다 @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v2/members") public CreateMemberResponse saveMemeberV2(@RequestBody @Valid CreateMe.. 2023. 11. 2.
728x90