전체 글
-
#QueryDSL - 2 기본문법 - JOINQueryDSL 2021. 3. 30. 10:31
조인 - 기본 조인 기본 조인 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭(alias)으로 사용할 Q 타입을 지정하면 된다 join(조인 대상, 별칭으로 사용할 Q타입) 기본 조인 /** * 팀 A에 소속된 모든 회원 */ @Test public void join() throws Exception { QMember member = QMember.member; QTeam team = QTeam.team; List result = queryFactory .selectFrom(member) .join(member.team, team) .where(team.name.eq("teamA")) .fetch(); assertThat(result) .extracting("use..
-
#QueryDSL -1 기본 Q-Type 활용QueryDSL 2021. 3. 29. 17:30
Q클래스 인스턴스를 사용하는 2가지 방법 QMember qMember = new QMember("m"); //별칭 직접 지정 QMember qMember = QMember.member; //기본 인스턴스 사용 기본 인스턴스를 static import와 함께 사용(기존 QMember.member 가 static import로 member로 변환) import static study.querydsl.entity.QMember.*; @Test public void startQuerydsl3() { //member1을 찾아라. Member findMember = queryFactory .select(member) .from(member) .where(member.username.eq("member1")) .fe..
-
#QueryDSL - 0QueryDSL 2021. 3. 29. 11:43
최신 JAVA BACKEND 기술은 스프링 부트 + 스프링 데이터 JPA 를 조합해서 사용. 하지만 이 것으로도 해결하지 못하는 문제가 있다. 문제 1. 복잡한 쿼리 2. 동적 쿼리 이런 문제들을 해결해줄수 있는것이 Querydsl이다. Querydsl 1.쿼리를 문자가아니라 자바코드로 작성 문법 오류를 컴파일 시점에 해결 2.동적 쿼리 문제 해결 3.쉬운 SQL 스타일 문법 4.자바코드이기 때문에 메소드로 재사용성 Querydsl + Querydsl 단순 반복X 쿼리도 자바 코드로! lombok setting settings→ Build →complier→Annoation Processors - Enable annotation processing을 체크 후 재시작 Querydsl setting buil..
-
#Spring Data Jpa - 15 Native QuerySpring Data JPA 2021. 3. 26. 09:56
네이티브 쿼리 가급적 네이티브 쿼리는 사용하지 않는게 좋음, 정말 어쩔 수 없을 때 사용 최근에 나온 궁극의 방법 → 스프링 데이터 Projections 활용 스프링 데이터 JPA 기반 네이티브 쿼리 · 페이징 지원 · 반환 타입 · Object[] · Tuple · DTO(스프링 데이터 인터페이스 Projections 지원) · 제약 · Sort 파라미터를 통한 정렬이 정상 동작하지 않을 수 있음(믿지 말고 직접 처리) · JPQL처럼 애플리케이션 로딩 시점에 문법 확인 불가 · 동적 쿼리 불가 JPA 네이티브 SQL 지원 public interface MemberRepository extends JpaRepository { @Query(value = "select * from member where ..
-
#Spring Data Jpa - 14 ProjectionsSpring Data JPA 2021. 3. 26. 09:50
Projections(쿼리 select 절에 들어갈 데이터 ) https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections 엔티티 대신에 DTO를 편리하게 조회할 때 사용 전체 엔티티가 아니라 만약 회원 이름만 딱 조회하고 싶으면? Spring Data JPA - Reference Documentation Example 109. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Mo..
-
#Spring Data Jpa - 13 스프링 데이터 JPA 구현체 분석Spring Data JPA 2021. 3. 25. 14:38
스프링 데이터 JPA 분석 스프링 데이터 JPA 구현체 분석 · 스프링 데이터 JPA가 제공하는 공통 인터페이스의 구현체 · org.springframework.data.jpa.repository.support.SimpleJpaRepository 리스트 12.31 SimpleJpaRepository @Repository @Transactional(readOnly = true) public class SimpleJpaRepository ...{ @Transactional public S save(S entity) { if (entityInformation.isNew(entity)) { em.persist(entity); return entity; } else { return em.merge(entity);..
-
#Spring Data Jpa - 12 확장기능 - Web 확장Spring Data JPA 2021. 3. 25. 12:00
Web 확장 - 도메인 클래스 컨버터 HTTP 파라미터로 넘어온 엔티티의 아이디로 엔티티 객체를 찾아서 바인딩 도메인 클래스 컨버터 사용 전 @RestController @RequiredArgsConstructor public class MemberController { private final MemberRepository memberRepository; @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id) { Member member = memberRepository.findById(id).get(); return member.getUsername(); } } 도메인 클래스 컨버터 사용 후 @RestCont..
-
#Spring Data JPA - 11 확장기능 - AuditingSpring Data JPA 2021. 3. 25. 11:00
@EntityListeners(AuditingEntityListener.class)Auditing 엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶으면? · 등록일 · 수정일 · 등록자 · 수정자 순수 JPA 사용 우선 등록일, 수정일 적용 package study.datajpa.entity; @MappedSuperclass @Getter public class JpaBaseEntity { @Column(updatable = false) private LocalDateTime createdDate; private LocalDateTime updatedDate; @PrePersist public void prePersist() { LocalDateTime now = LocalDateTime.no..