반응형

집계 함수로 JPA 쿼리 결과 사용자 지정

1. 개요 Spring Data JPA는 특정 상황에서 데이터베이스에서 엔터티를 검색하기 위해 쿼리 생성을 추상화할 수 있지만 때때로 집계 함수를 추가할 때와 같이 쿼리를 사용자 정의해야 합니다 . 이 사용방법(예제)에서는 이러한 쿼리의 결과를 개체로 변환하는 방법에 중점을 둘 것입니다. JPA 사양과 POJO를 포함하는 솔루션과 Spring Data Projection을 사용하는 솔루션 등 두 가지 솔루션을 살펴보겠습니다. 2. JPA 쿼리 및 집계 문제 JPA 쿼리는 일반적으로 매핑된 엔터티의 인스턴스로 결과를 생성합니다. 그러나 집계 함수가 있는 쿼리는 일반적으로 결과를 Object[] 로 반환합니다 . 문제를 이해하기 위해 게시물과 댓글 간의 관계를 기반으로 도메인 모델을 정의해 보겠습니다. @E..

Spring 2022.12.26

스프링 데이터 컴포저블 리포지토리

1. 소개 실제 시스템이나 프로세스를 모델링할 때 DDD(도메인 기반 디자인) 스타일 리포지토리는 좋은 옵션입니다. 이를 위해 Spring Data JPA를 데이터 액세스 추상화 계층으로 사용할 수 있습니다. 이 개념을 처음 사용하는 경우 속도를 높이는 데 도움 이 되는 이 소개 사용방법(예제) 를 확인하십시오. 이 사용방법(예제)에서는 프래그먼트라고 하는 더 작은 리포지토리를 사용하여 생성되는 구성 가능한 리포지토리 및 사용자 지정 생성 개념에 중점을 둘 것입니다. 2. 메이븐 의존성 구성 가능한 리포지토리를 생성하는 옵션은 Spring 5부터 사용할 수 있습니다. Spring Data JPA에 필요한 의존성을 추가해 보겠습니다. org.springframework.data spring-data-jpa..

Spring 2022.12.26

Spring 데이터 애플리케이션에서 기준 쿼리 사용

1. 소개 Spring Data JPA는 쿼리 메서드 및 사용자 지정 JPQL 쿼리 를 포함하여 엔터티를 처리하는 다양한 방법을 제공합니다 . 그러나 때로는 Criteria API 또는 QueryDSL 과 같은 보다 프로그래밍적인 접근 방식이 필요합니다 . Criteria API는 구문 오류를 방지하는 데 도움이 되는 입력된 쿼리를 생성하는 프로그래밍 방식을 제공합니다. 또한 Metamodel API와 함께 사용할 때 올바른 필드 이름과 유형을 사용했는지 확인하기 위해 컴파일 타임 검사를 수행합니다. 그러나 단점이 있습니다. 상용구 코드로 부풀려진 장황한 논리를 작성해야 합니다. 이 사용방법(예제)에서는 기준 쿼리를 사용하여 사용자 지정 DAO 논리를 구현하는 방법을 배웁니다. 또한 Spring이 상용구..

Spring 2022.12.23

Spring Data JPA – 파생 삭제 방법

1. 소개 Spring Data JPA를 사용 하면 데이터베이스에서 레코드를 읽거나 업데이트하거나 삭제 하는 파생 메서드 를 정의할 수 있습니다. 이는 데이터 액세스 계층에서 상용구 코드를 줄여주므로 매우 유용합니다. 이 예제에서는 실제 코드 예제와 함께 Spring 데이터 파생 삭제 메소드를 정의하고 사용하는 데 중점을 둘 것 입니다. 2. 파생된 deleteBy 메서드 먼저 예제를 설정해 보겠습니다. 과일 가게에서 사용할 수 있는 항목의 이름과 색상을 저장하기 위해 과일 엔터티를 정의합니다 . @Entity public class Fruit { @Id private long id; private String name; private String color; // standard getters and ..

Spring 2022.12.23

Hibernate 5의 멀티테넌시 사용방법(예제)

1. 소개 다중 테넌트 는 여러 클라이언트 또는 테넌트가 단일 리소스를 사용하거나 이 문서의 맥락에서 단일 데이터베이스 인스턴스를 사용하도록 허용합니다. 그 목적은 공유 데이터베이스에서 각 테넌트가 필요로 하는 정보를 분리하는 것 입니다. 이 사용방법(예제)에서는 Hibernate 5에서 다중 테넌시를 구성하는 다양한 접근 방식을 소개합니다. 2. 메이븐 의존성 pom.xml 파일 에 hibernate-core 의존성 을 포함해야 합니다. org.hibernate hibernate-core 5.2.12.Final 테스트를 위해 H2 메모리 내 데이터베이스를 사용하므로 이 의존성 을 pom.xml 파일 에도 추가해 보겠습니다 . com.h2database h2 1.4.196 3. Hibernate의 멀티테..

Spring 2022.12.23

최대 절전 모드의 FetchMode

1. 소개 이 짧은 사용방법(예제)에서는 @ org.hibernate.annotations.Fetch 어노테이션 에서 사용할 수 있는 다양한 FetchMode 값을 살펴보겠습니다. 2. 예제 설정 예를 들어 ID와 주문 집합이라는 두 가지 속성만 있는 다음 Customer 엔터티를 사용합니다. @Entity public class Customer { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "customer") @Fetch(value = FetchMode.SELECT) private Set orders = new HashSet(); // getters and setters } 또한 ID, 이름 및 고객 에 대한 참조로 구성된 주문 엔터티를 ..

Spring 2022.12.23

Spring JPA로 소프트 삭제를 구현하는 방법

1. 소개 테이블에서 물리적으로 데이터를 삭제하는 것은 데이터베이스와 상호 작용할 때 일반적인 요구 사항입니다. 그러나 때로는 데이터베이스에서 데이터를 영구적으로 삭제하지 않는 비즈니스 요구 사항이 있습니다. 예를 들어 이러한 요구 사항은 데이터 기록 추적 또는 감사의 필요성과 참조 무결성과 관련이 있습니다. 데이터를 물리적으로 삭제하는 대신 애플리케이션 프런트 엔드에서 액세스할 수 없도록 해당 데이터를 숨길 수 있습니다. 이 예제에서는 soft delete와 Spring JPA 로 이 기술을 구현하는 방법에 대해 알아봅니다 . 2. 일시 삭제란 무엇입니까? 일시 삭제는 일부 데이터를 데이터베이스의 테이블에서 물리적으로 삭제하는 대신 삭제된 것으로 표시하는 업데이트 프로세스를 수행합니다. 일시 삭제를 구..

Spring 2022.12.23

Spring Data MongoDB를 사용하여 여러 데이터베이스에 연결

1. 개요 Spring Data MongoDB를 사용하여 MongoClient 를 생성하여 데이터베이스에 대한 작업을 수행할 수 있습니다. 그러나 경우에 따라 애플리케이션에서 여러 데이터베이스를 사용해야 할 수도 있습니다. 이 사용방법(예제)에서는 MongoDB에 대한 여러 연결을 만듭니다. 또한 이 시나리오를 모방하기 위해 몇 가지 Spring Boot 테스트를 추가할 것입니다. 2. Spring Data MongoDB를 사용한 다중 데이터베이스 애플리케이션 MongoDB 를 사용할 때 데이터에 액세스하기 위해 MongoTemplate 을 생성합니다 . 따라서 다양한 데이터베이스에 연결하기 위해 여러 템플릿을 만들 수 있습니다. 그러나 Spring이 고유한 bean을 찾지 못하기 때문에 NoUnique..

Spring 2022.12.23

Java에서 현재 스택 추적 가져오기

1. 개요 Java 개발자로서 예외 를 처리할 때 스택 추적의 개념을 접하는 것은 매우 일반적 입니다. 이 사용방법(예제)에서는 스택 추적이 무엇이며 프로그래밍/디버깅하는 동안 스택 추적을 사용하는 방법을 이해합니다. 또한 StackTraceElement 클래스도 살펴볼 것입니다. 마지막으로 Thread 및 Throwable 클래스를 사용하여 가져오는 방법을 배웁니다. 2. 스택 추적이란 무엇입니까? 역추적이라고도 하는 스택 추적은 스택 프레임 List입니다. 간단히 말해서 이러한 프레임은 프로그램 실행 중 순간을 나타냅니다. 스택 프레임 에는 코드가 호출한 메서드에 대한 정보가 포함 됩니다. 현재 메서드에서 시작하여 프로그램이 시작된 시점까지 확장되는 프레임 List입니다. 이를 더 잘 이해하기 위해 ..

Spring 2022.12.23

Java에서 (알 수 없는 소스) 스택 추적 작업

1. 개요 이 짧은 기사에서는 Java 예외 스택 추적에서 알 수 없는 소스를 볼 수 있는 이유와 이를 수정하는 방법을 살펴보겠습니다. 2. 클래스 디버그 정보 Java 클래스 파일에는 디버깅을 용이하게 하는 선택적 디버그 정보가 포함되어 있습니다. 모든 디버그 정보가 클래스 파일에 추가되는지 여부와 무엇을 컴파일 시간 중에 선택할 수 있습니다. 그러면 런타임 중에 어떤 디버그 정보를 사용할 수 있는지 결정됩니다. Java 컴파일러의 도움말 문서를 조사하여 사용 가능한 다양한 옵션을 살펴보겠습니다. javac -help Usage: javac where possible options include: -g Generate all debugging info -g:none Generate no debuggin..

Spring 2022.12.23
반응형