Joy's Devlog

Joy's Devlog

  • 분류 전체보기 (112)
    • 전공 (33)
      • 네트워크 (14)
      • 운영체제 (12)
      • 컴파일러 (7)
      • 인공지능 (0)
      • 데이터마이닝 (0)
    • BOOKS (44)
      • SQL 전문가 가이드 (30)
      • 이펙티브 자바 (6)
      • Real MySQL 8.0 (8)
    • LECTURES (34)
      • 스프링 핵심 원리 기본편 (9)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
      • 실전! 스프링 부트와 JPA 활용 (11)
      • 실전! 스프링 데이터 JPA (6)
    • EXPERIENCES (1)
      • 기술 세미나 (0)
      • ChatGPT 질문 답변 (1)
      • 우리FISA (0)
  • 홈
  • 공지사항
  • 태그
  • 아카이브
  • 방명록
  • GITHUB
RSS 피드
로그인
로그아웃 글쓰기 관리

Joy's Devlog

컨텐츠 검색

태그

스토어드 프로그램 Spring Effective Java sqld 데이터통신 MySQL 네트워크 JPA 운영체제 동반 클래스 gap lock Java 정적 유틸리티 클래스 RealMySQL DB 버퍼 캐시 HTTP 쿼리 수행 과정 익스텐트 맵 컴파일러 더티페이지

최근글

공지사항

아카이브

LECTURES/실전! 스프링 데이터 JPA(6)

  • 나머지 기능들

    Specifications(명세) JPA Criteria 복잡 QueryDSL 사용하자 Query By Example 장점 동적 쿼리를 편리하게 처리 도메인 객체를 그대로 사용 데이터 저장소를 RDB에서 NoSQL로 변경해도 코드 변경이 없게 추상화되어 있음 스프링 데이터 JPA JpaRepository 인터페이스에 이미 포함 단점 조인은 가능하지만 내부 조인만 가능 외부 조인은 안됨 중첩 제약조건 안됨 매칭 조건이 매우 단순 QueryDSL Projections

    2023.09.29
  • 스프링 데이터 JPA 분석

    스프링 데이터 JPA 구현체 분석 SimpleJpaRepository 에 @Transactional이 걸려 있음 → 스프링 데이터 JPA를 사용하면 트랜잭션이 없어도 데이터 등록, 변경이 가능 @Transactional(readOnly = true) 를 사용하면 flush를 생략해서 약간의 성능 향상 가능 save()는 새로운 엔티티면 persist 아니면 merge 새로운 엔티티를 구별하는 방법 기본 전략 식별자가 객체일 때 null로 판단 식별자가 자바 기본 타입일 때 0으로 판단 Persistable 인터페이스를 구현해서 판단 로직 변경 가능 @GenerateValue를 사용하지 않고 id를 직접 할당할 경우 이미 식별자 값이 있는 상태로 save()를 호출함 → merge()가 호출됨 merge(..

    2023.09.29
  • 확장 기능

    사용자 정의 리포지토리 구현 스프링 데이터 JPA가 생성하는 메서드를 사용하지 않고 직접 구현하고 싶다면 JPA 직접 사용 스프링 JDBC Template MyBatis 데이터 커넥션 Querydsl 사용자 정의 인터페이스를 만들고 그 인터페이스의 구현 클래스를 만든 후 respository에 사용자 정의 인터페이스를 상속시킴 사용자 정의 구현 클래스는 리포지토리 인터페이스 이름 + Impl 으로 만들어야 함 스프링 데이터 JPA가 인식해서 스프링 빈으로 등록해줌 다른 이름으로 변경하고 싶으면 @EnableJpaRepositories(basePackages = "study.datajpa.repository", repositoryImplementationPostfix = "Impl") 실무에서는 주로 Qu..

    2023.09.29
  • 쿼리 메소드 기능

    메소드 이름으로 쿼리 생성 Spring Data JPA - Reference Documentation Example 121. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del docs.spring.io 조회(SELECT) : find…By, query…By, get…By 개수 조회(COUNT) : count…By → long..

    2023.09.29
  • 공통 인터페이스 기능

    공통 인터페이스 설정 javaConfig 설정 @Configuration @EnableJpaRepositories(basePackages = "jpabook.jpashop.repository") public class AppConfig {} 스프링 부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식) 만약 위치가 달라지면 @EnableJpaRepositories 필요 스프링 데이터 JPA가 구현 클래스 대신 생성 org.springframework.data.repository.Repository를 구현한 클래스는 스캔 대상 @Repository 애노테이션 생략 가능 공통 인터페이스 분석 공통 인터페이스 구성 주요 메서드 save(S) : 새로운 엔티티는 저장..

    2023.09.29
  • 프로젝트 환경 설정 / 예제 도메인 모델

    프로젝트 환경 설정 build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.1.0' } group = 'study' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter..

    2023.09.29
이전
1
다음
GITHUB
© 2018 TISTORY. All rights reserved.

티스토리툴바