
해당 글은 김영한님의 실전! 스프링 데이터 JPA - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 데이터 JPA 분석 실제 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체를 보기위해서는 아래를 참고하자. org.springframework.data.jpa.repository.support.SimpleJpaRepository 위의 “SimpleJpaRepository” 를 확인하고 중요한 것만 보면 다음과 같이 어노테이션이 적용되어 있다. [@Repository 적용] JPA 예외를 스프링이 추상화한 예외로 변환 [@Transactional 트랜잭션 적용] JPA의 모든 변경은 트랜잭션 안에서 동작 스프링 데이터 JPA는 변경(등록, 수정, 삭제) 메서드를 트랜잭션 처리 서비스 계층에서..

해당 글은 김영한님의 실전! 스프링 데이터 JPA - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 데이터 JPA - 확장 기능 사용자 정의 리포지토리 구현 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음 인터페이스의 메서드를 직접 구현해야하는 다양한 이유들.. JPA 직접 사용( EntityManager ) Querydsl 사용 스프링 JDBC Template 사용 MyBatis 사용 데이터베이스 커넥션 직접 사용 등등… 위와 같은 이유들로 사용자 정의 리포지토리를 구현해서 사용한다. 사용법 [사용자 정의 인터페이스] public interface MemberRepos..

해당 글은 김영한님의 실전! 스프링 데이터 JPA - 인프런 | 강의를 수강하고 정리한 게시글입니다. 스프링 데이터 JPA - 기본 스프링 데이터 JPA란? 스프링 데이터 JPA를 알아보기 전 왜 사용하는지부터 알아보자. 기존 순수 JPA에서 번거롭게 작성하던 기본 CRUD같은 코드 및 간단한 기능들을 스프링 데이터 JPA가 제공하는 공통 인터페이스를 사용함으로서 편리하고 쉽게 생산성을 높일 수 있다. [예시 1] 순수 JPA 사용 코드 public List findAll() { return em.createQuery("select m from Member m", Member.class) .getResultList(); } 스프링 데이터 JPA 사용 코드 public interface MemberRepo..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 스프링 데이터 JPA가 제공하는 Querydsl기능 및 커스텀 스프링 데이터에서 제공하는 기능을 알아보고 실무 환경에 맞게 바꿔보자. 인터페이스 지원 - QuerydslPredicateExecutor 공식 URL : Spring Data JPA - Reference Documentation [QuerydslPredicateExecutor 인터페이스] public interface QuerydslPredicateExecutor { Optional findById(Predicate predicate); Iterable findAll(Predicate predicate); long count(P..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 실무 활용 이전 글들 [Querydsl] 02. 기본 문법 , [Querydsl] 03. 중급 문법 에서 Querydsl의 문법을 알아봤다면 이제 Querydsl을 활용해 실전 예제를 한번 알아보자. - 순수 JPA와 Querydsl [순수 JPA Reopsitory] @Repository public class MemberJpaRepository { private final EntityManager em; private final JPAQueryFactory queryFactory; public MemberJpaRepository(EntityManager em) { this.em = em..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 중급 문법 이전 [Querydsl] 02. 기본 문법 에 이어 Querydsl에서 프로젝션, 동적 쿼리, 수정 삭제 벌크 연산 등에 대해 알아보도록 하자. 프로젝션과 결과 반환 프로젝션이란? select 대상을 원하는 값으로 지정하는 것. 프로젝션 대상을 여러가지 경우로해서 코드와 함께 보자. - 기본 : 프로젝션 대상이 엔티티인 경우 [프로젝션 대상이 하나일 때] @Test public void simpleProjection() { List result = queryFactory .select(member.username) .from(member) .fetch(); for (String ..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 문법 검색 조건 쿼리 @Test public void search() { Member findMember = queryFactory .selectFrom(member) .where(member.username.eq("member1").and(member.age.eq(10))) .fetchOne(); assertThat(findMember.getUsername()).isEqualTo("member1"); } 검색 조건은 .and(), .or()를 메서드 체인으로 연결할 수 있다. 또한 위에서 and 조건은 파라미터로 처리할 수 있다. 예) where(member.username.eq(“..

해당 글은 김영한님의 실전! Querydsl - 인프런 | 강의를 수강하고 정리한 게시글입니다. Querydsl - 기본 지식 JPQL과 Querydsl의 차이 시작전 JPQL과 Querydsl의 차이점이 뭔지 예제로 알아보자.(시작전 세팅은 제외) [JPQL로 작성한 “member1”을 찾는 예제] @Test public void startJPQL() { // member1 find. String qlString = "select m from Member m " + // 만약 여기서 m옆에 공백이 빠진다면..? "where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("us..