[Query DSL] Spring Data JPA와 Query DSL 통합(+ Query DSL 페이징 최적화)
Back-End/QueryDSL2024. 8. 20. 00:07[Query DSL] Spring Data JPA와 Query DSL 통합(+ Query DSL 페이징 최적화)

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.Query DSL을 Spring Data JPA에서 사용하려면 사용자 정의 리포지토리를 만들어야 한다. MemberTeamDto@Datapublic class MemberTeamDto { private Long memberId; private String username; private int age; private Long teamId; private String teamName; @QueryProjection public MemberTeamDto(Long memberId, String username, int age, Long teamId, String teamName) ..

[Query DSL] 중급 문법
Back-End/QueryDSL2024. 8. 19. 00:47[Query DSL] 중급 문법

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.테스트 기본 코드@Entity@Getter @Setter@NoArgsConstructor(access = AccessLevel.PROTECTED)@ToString(of = {"id", "username", "age"})public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String username; private int age; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") privat..

[Query DSL] 기본 문법
Back-End/QueryDSL2024. 8. 18. 00:25[Query DSL] 기본 문법

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.EntityManager 로 JPAQueryFactory 생성Querydsl은 JPQL 빌더JPQL: 문자(실행 시점 오류), Querydsl: 코드(컴파일 시점 오류)JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리JPAQueryFactory를 필드로 제공하면 동시성 문제는 JPAQueryFactory를 생성 할 때 제공하는 EntityManager(em)에 달려있다. 스프링 프레임워크는 여러 쓰레드에서 동시에 같은 EntityManager에 접근해도, 트랜잭션 마다 별도의 영속성 컨텍스트를 제공하기 때문에, 동시성 문제는 걱정하지 않아도 된다. 테스트 기본 코드@Entity@Get..

[Query DSL] Query DSL 초기 세팅
Back-End/QueryDSL2024. 8. 17. 00:49[Query DSL] Query DSL 초기 세팅

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.필자의 스프링 부트 버전은 3.3.2이다. 의존성 추가build.gradle의 dependencies에 아래의 내용을 추가해준다.implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"이후 gradle을 새로고침 해준다. 환경 설정 검증테스트용 엔티티를 하나 추가해준다./src/main/java/study/querydsl/controller/entity/Hell..

[Spring Data JPA] Projections 과 Native Query
Back-End/JPA2024. 8. 16. 00:16[Spring Data JPA] Projections 과 Native Query

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.ProjectionsProjections는 Spring Data JPA에서 특정 엔티티의 일부 필드만을 선택적으로 조회하기 위해 사용하는 기능이다. Projections를 통해 전체 엔티티를 조회하지 않고 필요한 필드만을 선택적으로 가져올 수 있으며, 이를 통해 성능을 최적화하고 데이터 전송량을 줄일 수 있다. 인터페이스 기반 프로젝션 (Interface-based Projection)프로젝션을 위해 인터페이스를 정의하고, 필요한 필드만 메서드로 선언한다.JPA는 이 인터페이스를 구현하는 프록시 객체를 생성하여, 쿼리 결과를 이 인터페이스의 구현체로 반환한다.public interface UsernameOnly ..

[Spring Data JPA] 새로운 엔티티인지 구별하는 방법
Back-End/JPA2024. 8. 15. 00:16[Spring Data JPA] 새로운 엔티티인지 구별하는 방법

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.이 글은 JPA의 변경 감지와 병합에 대한 이해가 필요합니다.2024.08.05 - [Java Category/JPA] - [JPA] 병합(Merge)과 변경 감지(Dirty Checking) [JPA] 병합(Merge)과 변경 감지(Dirty Checking)이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.JPA(Java Persistence API)에서 변경 감지(Dirty Checking)와 병합(Merge)은 엔티티 상태 관리를 위한 중요한 개념이rebugs.tistory.com save() 메서드의 구조org.springframework.data.jpa.rep..

[Spring Data JPA] 확장 기능
Back-End/JPA2024. 8. 14. 00:04[Spring Data JPA] 확장 기능

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.사용자 정의 리포지토리사용자 정의 인터페이스public interface MemberRepositoryCustom { List findMemberCustom();} 사용자 정의 인터페이스 구현 클래스@RequiredArgsConstructorpublic class MemberRepositoryCustomImpl implements MemberRepositoryCustom { private final EntityManager em; @Override public List findMemberCustom() { return em.createQuery("select m from Memb..

[Spring Data JPA] 쿼리 메서드 기능
Back-End/JPA2024. 8. 13. 00:32[Spring Data JPA] 쿼리 메서드 기능

이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.쿼리 메소드 기능 3가지메소드 이름으로 쿼리 생성메소드 이름으로 JPA NamedQuery 호출@Query 어노테이션을 사용해서 리파지토리 인터페이스에 쿼리 직접 정의 메서드 이름으로 쿼리 생성인터페이스에 메서드만 정의하면 알아서 DB로 쿼리가 날라간다.public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username, int age);}위 메서드 이름에서 알 수 있듯이, 이름과 나이를 기준으로 회원을 정리하는 기능이다.당연히 이 방식은 인공지능이 개입하는 것은 아니고 이름의..

image