Spring/Spring JPA (31) 썸네일형 리스트형 [JPA] ApplicationContextAware 간단하게 ApplicationContextAware는 스프링 프레임워크에서 제공하는 인터페이스로, 스프링 컨텍스트에 접근할 수 있도록 해주는 기능을 제공합니다. 이 인터페이스를 구현하면 스프링 컨테이너가 관리하는 ApplicationContext 객체를 직접 사용할 수 있게 됩니다. 이를 통해 애플리케이션 전반에서 스프링 컨텍스트의 구성 요소에 접근하거나 필요한 빈을 동적으로 가져오는 등의 작업이 가능해집니다.주요 특징ApplicationContextAware 인터페이스를 구현한 클래스는 setApplicationContext(ApplicationContext applicationContext) 메서드를 오버라이딩해야 합니다.이 메서드는 스프링이 해당 클래스를 컨테이너에 등록할 때 자동으로 호출되며, 스프링 컨텍.. [JPA] ENUM 타입 JPA에서 enum 타입은 데이터베이스 컬럼에 매핑할 때 @Enumerated 어노테이션을 사용하여 처리할 수 있습니다. enum은 코드의 가독성을 높이고, 특정 값 집합을 제한하는 데 유용하기 때문에 JPA에서도 널리 사용됩니다. @Enumerated 어노테이션은 enum 필드를 데이터베이스에 저장할 때 어떤 방식으로 저장할지 결정합니다. 두 가지 주요 전략이 있습니다:1. EnumType.ORDINALenum의 순서(인덱스 값)를 저장합니다. 즉, enum의 정의된 순서에 따라 0, 1, 2와 같은 정수 값으로 저장됩니다.장점: 저장 공간이 작으며, 데이터베이스에 인덱스 값을 저장하므로 효율적일 수 있습니다.단점: enum 순서가 바뀌거나 새로운 값이 추가되면 기존 데이터가 잘못 매핑될 위험이 있습니.. [JPA] 엔티티 클래스에서 많이 사용되는 어노테이션 1. @Entity 이 어노테이션은 클래스가 JPA 엔티티임을 나타냅니다.필수 사용: 엔티티로 작동하기 위해서는 반드시 필요하며, 이를 통해 JPA가 해당 클래스를 데이터베이스의 테이블과 매핑할 수 있습니다.2. @Table데이터베이스의 특정 테이블과 매핑하기 위해 사용됩니다.옵션 속성: name (테이블 이름), schema (스키마 이름), uniqueConstraints (고유 제약 조건) 등이 있습니다.예시: @Table(name = "members")3. @Id해당 필드를 엔티티의 **기본 키(primary key)**로 지정합니다.필수 사용: 엔티티 클래스에는 반드시 하나의 @Id가 필요합니다.4. @GeneratedValue기본 키 값의 생성을 자동으로 처리하는 전략을 지정합니다.옵션 속성:.. [JPA] Paging JPA에서 **페이징(Paging)**은 대량의 데이터가 있을 때 효율적으로 데이터를 조회하고 관리하기 위해 자주 사용됩니다. 데이터베이스에서 데이터를 조회할 때 모든 결과를 한 번에 가져오는 것은 성능 상의 부담이 크기 때문에, 특정 페이지 단위로 데이터를 나눠 가져오거나, 필요한 만큼의 데이터만 가져오는 방식으로 최적화를 할 수 있습니다.Spring Data JPA는 페이징 기능을 제공하기 위해 Pageable과 Page 인터페이스를 활용합니다. 다음은 주요 개념과 사용 방법에 대한 설명입니다.주요 개념Pageable 인터페이스:페이징을 위한 정보를 담고 있는 인터페이스로, 페이지 번호, 페이지 크기(한 번에 가져올 항목 수), 정렬 기준 등을 설정할 수 있습니다.PageRequest.of(int p.. [JPA] IsEmpty와 IsNotNulLL 의 차이점 IsEmpty와 IsNotNull은 JPA에서 사용되는 조건 검사 메서드들로, 컬렉션 또는 특정 필드의 상태를 확인할 때 주로 사용됩니다. 두 메서드는 개념적으로 다음과 같은 차이점이 있습니다:IsEmpty의미: IsEmpty는 주로 컬렉션(List, Set 등)이 비어 있는지 확인할 때 사용됩니다.용도: 주로 데이터베이스에서 컬렉션이 비어 있는 경우(즉, 자식 엔터티가 없는 경우)를 찾고자 할 때 사용됩니다.예시: // 예시: orders가 비어 있는 User 엔터티를 찾는 경우List users = userRepository.findByOrdersIsEmpty(); 비교 대상: IsEmpty는 컬렉션에 대해 사용되며, 단순히 값이 없는 컬렉션이나 필드(빈 상태)를 확인합니다. 2.IsNotNull의.. Query by Example(QBE) Query by Example(QBE)은 Spring Data JPA에서 제공하는 기능으로, 엔티티의 샘플 인스턴스를 사용해 데이터베이스에서 일치하는 데이터를 조회할 때 사용됩니다. 이를 통해 복잡한 쿼리를 작성하지 않고도 동적으로 데이터를 검색할 수 있습니다.주요 특징동적 쿼리 지원: 특정 필드 값만 설정한 엔티티 객체(Example)를 통해 검색할 수 있습니다. 설정된 필드 값이 조건으로 사용되며, null이거나 설정되지 않은 필드는 무시됩니다.유연한 매칭: 기본적으로 값이 정확히 일치하는 경우에만 결과를 반환하지만, Matcher를 설정하여 부분 일치, 대소문자 무시, 시작 또는 끝 일치 등의 다양한 조건을 지정할 수 있습니다.타입 안정성: QBE는 일반적으로 리포지토리 메서드와 함께 사용되어, 예.. Spring Boot JPA 간단하게 Spring Boot JPA(Java Persistence API)는 자바 애플리케이션에서 데이터베이스와 객체 간의 매핑을 쉽게 할 수 있도록 도와주는 ORM(Object Relational Mapping) 도구입니다. 주로 Spring Data JPA라는 스프링 모듈을 사용하여 JPA를 더욱 편리하게 활용할 수 있습니다. 여기서 JPA는 인터페이스이며, 구체적인 구현체로는 Hibernate가 많이 사용됩니다.주요 개념과 기능1. 엔티티(Entity)엔티티는 데이터베이스의 테이블과 매핑되는 클래스입니다. JPA에서는 각 클래스가 데이터베이스의 테이블로 매핑되고, 클래스의 필드는 테이블의 컬럼으로 매핑됩니다.예를 들어, @Entity 어노테이션을 사용하여 특정 클래스를 엔티티로 선언하고, @Id 어노테이션.. 이전 1 2 3 4 다음