본문 바로가기

jpa8

[JPA] Java로 JPA 설정시 주의할점(.yml 설정 무시) 프로젝트 설정중, application.yml 파일의 JPA 설정이 무시되는 상황이 발생했다. @Entity 기준으로 Table 을 생성하게 해주는 옵션인 ddl-auto 를 Create 로 변경 후 Server 를 실행 시켰는데Create table 쿼리 출력 X, DB에 table 생성 X 상황이 발생한것.  프로젝트에 Multiple Datasource 설정과, 다른 몇몇 설정들을 추가하기전엔 잘 동작하고 있었던 설정이었다. 프로젝트 구조는 대략적으로 아래와 같다.1. Multi module 환경    - core (Entity, service, Repository)    - api (Controller)api 모듈은 core 모듈을 의존하고, scan 하여 사용중. 문제없었음.2. Multiple.. 2024. 8. 12.
[JPA]JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) JpaRepository 원리 및 내부 분석(EntityManager 자동주입, 상속관계) 1. 서론(찾아보게된 계기) - 얼마전 QueryDsl 적용을 하던 도중, 기존에 Spring Data JPA 에서 사용하던 JpaRepository 를 extends 받는 방식과 QueryDsl 을 동시에 적용하던 도중, 대다수의 블로그나 예제에서는 QueryDsl 을 사용하는 Repository에 Entity Manaer를 적용하는 방식을 사용하고 있었다. 하지만 기존에 사용하던 JpaRepository 는 EntityManager 를 자동주입을 해주어서 extends 를 받는것만으로도 EntityManager 를 별도로 설정하지 않고 사용 할 수 있었다. 그래서 기존의 JpaRepository 의 Entity.. 2023. 8. 30.
[JPA] JPA N+1 문제와, 해결방법 정리 JPA N+1 문제 이번에 볼 문제는 JPA를 사용한다면 한번쯤은 들어봤고, 자주 봤을것이다. JPA N+1 문제에 대해서 알아보고 해결법에 대해서 알아보자. - N+1 문제란? 1번의 쿼리를 실행 했을 때, N번의 쿼리가 추가적으로 실행되는것을 뜻합니다. 예를들어 member를 조회 했을때 연관관계를 맺고있는 데이터를 조회 하기 위해 N번의 조회 쿼리가 실행된다고 생각하면됩니다. 일반적인 쿼리라면 join을 사용한다면, 한번의 쿼리로 데이터를 조회 할 수 있지만. JPA에서는 member를 조회하고, member가 참조하고 있는 테이블의 연관되어있는 data를 data의 갯수만큼 조회 하기 때문입니다. JPA의 경우 즉시로딩(fetchType_EAGER), 지연로딩(fetchType_LAZY)와 같은 .. 2023. 2. 21.
[JPA] 영속성 컨텍스트(Persistence Context), Entity Manager 목차 JPA 영속성 컨텍스트란? 영속성 컨텍스트(Persistence Context) Entity Manager(엔티티 매니저) Entity 생명주기 flush, 변경감지(Dirty Checking) JPA 영속성 컨텍스트란?(Persistence Context) - JPA에서 가장 중요한 개념인 영속성 컨텍스트(Persistence Context)에 대해서 알아보자. - JPA는 Entity Manager, 영속성 컨텍스트를 통해 데이터의 상태변화를 감지하고 상황에 맞는 쿼리를 수행한다. ○ 영속성 컨텍스트 (Persistence Context) Entity를 영구 저장하는 환경. JAVA 영역에서 데이터를 관리하며 DB 접근을 역할을 수행한다. 어플리케이션과 DB 사이에서 객체를 보관, 저장하는 개념.. 2023. 2. 2.
[JPA] JPA, ORM 이란 무엇인가? JPA(Java Persistence API), ORM(Object Reational Mapping) 이란 ? JPA를 공부를 하게 된다면 JPA, ORM, 영속성 컨텍스트 등 많은 용어가 나오게 된다. JPA, ORM 이란 무엇이고, 관련된 내용에 대해서 알아보자. ORM 이란? - ORM(Object Reational Mapping)은 객체 - 관계 매핑을 뜻한다. 객체와 관계형 데이터베이스(RDB)를 매핑해주는것이다. 객체 모델과 관계형 모델에는 불일치(*패러다임 불일치), 즉 차이점이 존재하게 된다. (Ex. 상속관계{객체는 상속개념이 있지만, RDB는 상속개념이 존재 하지 않는다.}) ORM은 이러한 차이의 간극을 줄여준다. 즉, OOP(객체)와 RDB(관계형 데이터베이스)를 중간에서 매핑(혹은.. 2023. 1. 31.
[Java] Lombok 실제 사용법(2) Lombok 라이브러리 실제 사용법 및 적용법을 코드를 통해 알아보자! 롬복의 기본 개념과 어노테이션들에 대한 자세한 설명은 아래 링크에서 확인하세요! https://lucas-owner.tistory.com/26 [Java] LomBok이란? & 어노테이션 정리 (1) Java 라이브러리 Lombok이란? + 자주 사용 어노테이션 정리! ○ LomBok 이란? LomBok이란 어노테이션 기반으로 코드 자동완성 기능을 제공하는 라이브러리이다. Spring, Spring Boot 로 Web 개발을 하다보면 반 lucas-owner.tistory.com - 해당 코드 사용법은 필자의 개인적인 코딩 스타일이 적용되어 있고, 정답이 아닐수 있습니다! (상황에 따라 사용하세요!) ○ Code - 우선 아래와 같은.. 2023. 1. 17.
[Java] DTO <-> Entity 변환(ModelMapper & method & ModelMapper List 바인딩) * 정답이 아닐수 있으며 제가 사용하는 방법들에 대해 설명할 예정입니다! DTO Entity 변환 Entity 와 DTO는 분리하여 사용하는것이 좋기 때문에 분리해서 사용하다 보면 각 객체간에 어떻게 변환을 하는지에 대해서 의문점이 생길것이다. 구글링을 조금만 하더라도 여러가지 방법들이 보이기 때문이다..! 1. DTO 내부 메서드로 값을 전달하는 방법. 2. Model Mapper 라이브러리를 사용하는 방법. 3. JPA사용시 Repository에서 직접 조회하는 방법 이 글에서는 3번을 제외하고 설명 해볼 생각이다. - DTO, Entity 내부 편의 메서드 작성법 - Model Mapper 단건 바인딩. - 다건(List) 바인딩. (Model Mapper List 바인딩.) Entity DTO 분.. 2022. 12. 22.
[springBoot] Intellij - springBoot 프로젝트 간단 생성 (Ultimate & community) & SpringIO 스프링 부트(Spring Boot) Spring Boot 란? Java를 사용하는 Java기반 Web Application을 구축할 수 있는 프레임워크이다. 상황에 따라 Rest API만을 사용 할 수도 있고, 템플릿엔진을 통해 Server, 화면 모두 구현 할 수 있다. Spring & Spring Boot Spring 과 Spring Boot 에 대하여 간단하게 설명을 해보자면 Spring : 의존성 주입(DI), IOC를 구현함 즉 다양한 스프링 모듈 및 라이브러리 사용 가능 - 세부적인 Setting이 필요할 수 있다. Spring Boot : 프로젝트 생성시, 생성 후 라이브러리를 등록하면 호환되는 버전을 자동으로 Setting 해준다. 버전관리에 스트레스를 받지않았다.. 또한 내장 서버(Tom.. 2022. 12. 9.