DataBase/JPA(5)
-
QueryDSL 엔티티 변경 시 빌드 오류 해결 방법
QueryDSL 엔티티 변경 시 빌드 오류 해결 방법🚀 들어가며QueryDSL을 활용해 쿼리를 작성할 때, 엔티티의 필드(테이블 변수)를 수정하면 기존의 QClass에서 해당 필드를 찾지 못해 빌드가 실패하는 문제가 발생할 수 있다.이 문제를 해결하려면 변경된 엔티티 필드를 반영한 QClass를 새로 생성해야 하지만, 빌드 과정에서 기존 QClass가 남아 있어 오류가 발생하는 경우가 많다.기존 방식대로라면, 해당 쿼리들을 주석 처리 → 빌드 진행 → QClass 갱신 → 주석 해제 후 수정이라는 번거로운 과정이 필요하다. 하지만, 이를 자동화하면 불필요한 수작업을 줄이고 더 효율적으로 개발할 수 있다.이번 글에서는 Gradle 설정을 통해 QClass를 자동으로 갱신하는 방법을 정리해보았다.✅ 1. ..
2025.03.01 -
[JPA]@Transactional이란
1. 서론프로젝트를 진행하고 코드를 작성할 때 DB를 사용하게 된다면 Spring Data JPA를 사용하게 된다. 그리고 이때 해당 JPA는 Java에서의 ORM의 표준으로 사용이 되며, Spring 프레임워크에서는 Spring Data JPA로 하여 사용을 하게 된다. 해당 JPA를 사용하면서 같이 등장하는 것이 바로 @Transactional 이다.해당 어노테이션은 트랜잭션 관리를 간편, 용이하게 해주는 어노테이션이다. 이를 통해 해당 백엔드 서버와 데이터베이스 간의 작업이 하나의 단위로 실행하도록 보장하는 역할이다. 그렇기에 지금까지는 이러한 논리적 하나의 단위(원자성)을 위해 항상 해당 트랜잭션을 기입해주었다.하지만 이번에 기능을 구현한 후 성능 개선을 위해 리팩토링 및 학습을 하던 도중 무분별..
2024.09.24 -
[ETC] Fetch 옵션
[ETC] Fetch 옵션 오래간만에 Querydsl을 통해 작업을 하면서 fetch 옵션들에 대해 정리가 필요한 것 같아서 학습 겸 작성하게 되었다. fetchOne() 단일결과, 하나의 레코드만 가져올 때 사용하는 메서드 결과가 하나인 경우 가장 직관적이고 간단한 방법 결괏값이 없거나 여러 개인 경우, 'NonUniqueResultException'이 발생할 수 있다. fetchFirst(() 첫 번째 결과를 가져올 때 사용하는 메서드 limit(1)과 유사한 역할 여러 개의 결괏값이 나올 때 그중 첫 번째 결괏값만 출력 첫 번째 결과가 필요할 때 유용 결과가 없는 경우 null 반환, 반드시 결과가 있다는 확신이 있을 때 사용하는 것이 좋음 fetchResult() 결과 목록과 전체 결과 수를 함께..
2023.08.28 -
[JPA] 엔티티 매핑
[JPA] 엔티티 매핑 @Entity @Table 다양한 매핑 사용 데이터 베이스 스키마 자동 생성 DDL 생성 기능 기본 키 매핑 필드와 컬럼 매핑 : 레퍼런스 @Entity JPA를 사용하여 테이블을 표현할 자바 클래스는 @Entity 어노테이션을 필수로 붙여야 함 속성 기능 기본값 name - JPA에서 사용할 엔티티 이름 지정 - 기본값은 클래스 이름을 사용 - 프로젝트 내의 다른 패키지에 동일 이름을 가진 엔티티 클래스가 존재할 시 이름을 지정하여 충돌 방지 필수 설정하지 않을 경우 클래스 이름 그대로 사용 Entity클래스 사용 - interface로 구현 / default 값은 entity class 파일과 동일 @Documented @Target(TYPE) @Retention(RUNTIME..
2022.12.21 -
[JPA] 영속성 관리
[JPA] 영속성 관리 엔티티 매니저 펙토리 & 엔티티 매니저 영속성 컨텍스트 엔티티의 생명주기 영속성 컨텍스트의 특징 플러시 준영속 정리 엔티티 매니저 펙토리 & 엔티티 매니저 엔티티 매니저 (EntityManager) Make an instance managed and persistent. Params:entity – entity instance 엔티티 ( Entity )에 관한 모든 일 처리 저장 / 수정 / 삭제 / 조회... etc 엔티티를 저장하는 가상의 데이터 베이스 엔티티 매니저 팩토리 (EntityManager Factory) Create a new application-managed EntityManager. This method returns a new EntityManager ins..
2022.12.19