Spring-Boot/실전! 스프링 데이터 JPA
-
6. 나머지 기능들Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 24. 10:43
실무에서 쓰기는 애매한 기술들. 1. Specifications (명세) - 실무에서 쓰지마라! - 책 도메인 주도 설계(Domain Driven Design) 는 SPECIFICATION(명세) 라는 개념을 소개 - 스프링 데이터 JPA는 JPA Criteria를 활용해서 이 개념을 사용할 수 있도록 지원 * 술어(predicate) * - 참 또는 거짓으로 평가 - AND OR 같은 연산자로 조합해서 다양한 검색조건을 쉽게 생성(컴포넌트 패턴) - 예) 검색 조건 하나하나 - 스프링 데이터 JPA는 `org.springframework.data.jpa.domain.Specification` 클래스로 정의 * 명세 기능 사용 방법 * * `JpaSpecificationExecutor` 인터페이스 상속 ..
-
5. 스프링 데이터 JPA 분석Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 23. 18:16
1. 스프링 데이터 JPA 구현체 분석 - 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 ㆍ`org.springframework.data.jpa.repository.support.SimpleJpaRepository` - `@Repository` 적용 : JPA 예외를 스프링 추상화한 예외로 변환 - `@Transactional` 트랜잭션 적용 ㆍJPA의 모든 변경은 트랜잭션 안에서 동작 ㆍ스프링 데이터 JPA는 변경(등록, 수정, 삭제) 메서드를 트랜잭션 처리 ㆍ서비스 계층에서 트랜잭션을 시작하지 않으면 리파지토리에서 트랜잭션 시작 ㆍ서비스 계층에서 트랜잭션을 시작하면 리파지토리는 해당 트랜잭션을 전파 받아서 사용 ㆍ그래서 스프링 데이터 JPA를 사용할 때 트랜잭션이 없어도 데이터 등록, 변경..
-
4. 확장 기능Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 23. 17:35
1. 사용자 정의 리포지토리 구현 - 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성 - 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음 - 다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면? ㆍJPA 직접 사용 (`EntityManager`) ㆍ스프링 JDBC Template 사용 ㆍMyBatis 사용 ㆍ데이터베이스 커넥션 직접 사용 등등.. ㆍQueryDsl 사용 public interface MemberRepository extends JpaRepository, MemberRepositoryCustom { public interface MemberRepositoryCustom { List findMemberCust..
-
3. 쿼리 메소드 기능Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 22. 08:01
1. 메소드 이름으로 쿼리 생성 - 스프링 데이터 JPA가 제공하는 마법 같은 기능 * 쿼리 메소드 기능 3가지 * - 메소드 이름으로 쿼리 생성 - 메소드 이름으로 JPA NamedQuery 호출 - `@Query` 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의 스프링데이터JPA public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username,int age); } - 스프링 데이터 JPA는 메소드 이름을 분석해서 JPQL을 생성하고 실행 *쿼리 메소드 필터 조건* - 스프링 데이터 JPA 공식 문서 참고 ( https://docs.spring.io/spri..
-
2. 공통 인터페이스 기능Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 17. 08:39
1. 순수 JPA 기반 리포지토리 만들기 * 참조 : JPA에서 수정은 변경감지 기능을 사용하면 된다. - 트랜잭션 안에서 엔티티를 조회한 다음에 데이터를 변경하면, 트랜잭션 종료 시점에 변경 감지 기능이 작동해서 변경된 엔티티를 감지하고 UPDATE SQL을 실행한다. 2. 공통 인터페이스 설정 * JavaConfig 설정 - 스프링 부트 사용시 생략 가능 * @Configuration @EnableJpaRepositories(basePakges = "jpabook.jpashop.repository") public class AppConfig {} - 스프링 부트 사용시 `@SpringBootApplication` 위치를 지정 ( 해당 패키지와 하위 패키지 인식) - 만약 위치가 달라진다면 `@Enab..
-
1. 프로젝트 환경 설정 & 2. 예제 도메인 모델과 동작 확인Spring-Boot/실전! 스프링 데이터 JPA 2023. 2. 15. 11:30
1. 프로젝트 생성 2. 라이브러리 살펴보기 * gradle 의존관계 보기 * ./gradlew dependencies --configuration compileClasspath * 스프링 부트 라이브러리 살펴보기 * - spring-boot-starter-web ㆍspring-boot-starter-tomcat : 톰캣(웹서버) ㆍspring-webmvc : 스프링 웹 MVC - spring-boot-starter-data-jpa ㆍspring-boot-starter-aop ㆍspring-boot-starter-jdbc º HikariCP 커넥션 풀 (부트 2.0 기본) ㆍhibernate + JPA : 하이버네이트 + JPA ㆍspring-data-jpa : 스프링 데이터 JPA - spring-bo..