JPA
-
[JPA] 엔티티 매핑Back-end/JPA 2022. 4. 11. 22:39
JPA에서 가장 중요한 2가지는 '객체와 관계형 데이터베이스 매핑' & '영속성 컨텍스트' 이다. # 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하는 엔티티라고 한다. JPA를 사용해 테이블과 매핑할 클래스에는 반드시 @Entity를 지정해줘야 한다. @Entity가 붙은 클래스는 기본 생성자가 필수이다. (public or protected 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 클래스의 필드에 final을 사용할 수 없다. Q. @Entity가 붙은 클래스에 기본 생성자가 필수인 이유는? JPA 인터페이스의 구현체로 대부분 사용되는 Hibernate는 내부적으로 Class.newInstance()라는 Java..
-
[JPA] 등장 배경, 사용 이유, 간단 구동 방식Back-end/JPA 2022. 3. 31. 01:02
스터디를 위해 인프런 강의를 들으면서 드디어 JPA에 대한 기본적인 이해를 하게 되었다. 기존에 코드를 짜면서 '정말 데이터베이스에서 이렇게 가져오나..?'라는 의문이 들었던 이유는 JPA를 잘 몰랐기 때문이었다. 이번 스터디를 하면서 제대로 공부해야겠다. 😃 ✔️ JPA 등장 배경 요즘 개발을 할 때 객체 지향 언어 & 관계형 데이터베이스의 조합을 많이 사용한다. 객체를 관계형 데이터베이스에 저장하기 위해서는 아무래도 SQL이 필수적이다. ## SQL 의존적인 개발의 문제점 - 객체 CRUD 혹은 필드 추가시 SQL문을 변경하기 번거롭고, 놓치는 부분이 발생할 수 있다. - 객체와 관계형 데이터베이스 간 패러다임의 불일치 (상속, 연관관계, 데이터 타입, 데이터 식별 방법) → 계속해서 작성해야하는 S..
-
[SpringBoot] JPA를 통해 엔티티 반환시 DtoVo 사용하기Back-end/TIL 2022. 3. 16. 09:28
📌 상황 Spring Data JPA를 통해 엔티티 조회시 기존에는 아래와 같이 코드를 작성하였다. //기존 코드 Page findByMenuKorNameContains(String menuKorName, Pageable pageable); Page findByMenuEngNameIgnoreCaseContains(String menuEngName, Pageable pageable); 위의 코드가 틀린 것은 아니지만, 몇가지 문제점이 존재한다. 1. 기존의 방식은 엔티티 자체가 반환되기 때문에 만약 조회시 특정 필드 값만 필요하다면, 불필요한 필드 값이 모두 반환되는 상황이다. 2. 불필요한 필드가 많거나 해당 필드의 타입이 text와 같이 사이즈가 크다면, 성능 이슈가 발생할 수 있다. 즉, 기존의 방식..