Spring Data JPA - 벌크성 수정 쿼리
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 벌크성 수정 쿼리 JPA는 엔티티를 가져와서 변경할 경우 변경 감지 기능이 작동한다. 이런 경우는 한 건 씩 지원되는 거고, 모든 데이터에 일괄적인 업데이트를 날려야 하는 경우(ex 모든 직원의 연봉 10% 인상)에 벌크성 수정 쿼리라고 한다. 순수 JPA 예제 20살이거나, 20살 이상인 회원의 나이를 +1 MemberJpaRepository.class public int bulkAgePlus(int age) { return em.createQuery("update Member m set m.age = m.age + 1 where m.age >= :age") .setPa..
Spring Data JPA - 스프링 데이터 JPA 페이징과 정렬
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 스프링 데이터 JPA 페이징과 정렬 페이징과 정렬 파라미터 org.springframework.data.domain.Sort : 정렬 기능 org.springframework.data.domain.Pageable : 페이징 기능(내부에 Sort 포함) 패키지명에서 알 수 있는 건 JPA를 사용하지 않는다는 것이다. 어떤 DB(관계형, noSql 등)를 사용하던 이 기능을 사용할 수 있도록 공통화시킨 것이다. 세부 구현은 물론 개발자가 알아서 직접 개발해야 한다. 특별한 반환 타입 org.springframework.data.domain.Page 추가 count 쿼리 결과를..
Spring Data JPA - 순수 JPA 페이징과 정렬
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 순수 JPA 페이징과 정렬 예제를 위한 조건 검색 조건 : 나이 10살 정렬 조건 : 이름 기준 내림차순 페이징 조건 : 첫 번째 페이지, 페이지당 보여 줄 데이터는 3건 JPA 페이징 리포지토리 코드 MemberJpaRepository.class public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member m where m.age = :age order by m.username desc") .setParameter("age", age) .setFirst..
Spring Data JPA - 파라미터 바인딩, 반환 타입
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 파라미터 바인딩, 반환 타입 위치 기반 select m from Member m where m.username = ?0 이름 기반 select m from Member m where m.username = :name 위치 기반은 거의 사용하지 않는다. 코드 가독성과 유지보수를 위해 이름 기반 파라미터 바인딩을 사용하는 것이 좋다. 파라미터 바인딩 public interface MemberRepository extends JpaRepository { @Query("select m from Member m where m.username = :name") Member findM..
Spring Data JPA - @Query, 값, DTO 조회하기
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. @Query, 값, DTO 조회하기 단순히 값 하나 조회 여태 엔티티 위주로 조회를 했는데 그럼 엔티티에 들어있는 필드 하나, 즉 기본 타입으로 데이터를 조회하려면? @Query("select m.username from Member m") List findUsernameList(); @Test public void findUsernameList() { Member m1 = new Member("AAA", 10); Member m2 = new Member("BBB", 20); memberRepository.save(m1); memberRepository.save(m2); ..
Spring Data JPA - @Query, 리포지토리 메서드에 쿼리 정의하기
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 리포지토리 메서드에 쿼리 정의하기 쿼리 메서드 기능 3가지 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 애노테이션을 사용해서 리포지토리 인터페이스에 쿼리 직접 정의 메서드에 JPQL 쿼리 작성 MemberRepository.interface @Query("select m from Member m where m.username = :username and m.age = :age") List findUser(@Param("username") String username, @Param("age") int age); MemberRepos..
Spring Data JPA - JPA NamedQuery
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. JPA NamedQuery 쿼리 메서드 기능 3가지 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 애노테이션을 사용해서 레파지토리 인터페이스에 쿼리 직접 정의 JPA NamedQuery @NamedQuery 애노테이션으로 Named 쿼리 정의 실무에서 거의 사용할 일이 없다. JPA를 직접 사용해서 Named 쿼리 호출 관련 포스팅 JPA 객체지향 쿼리 언어(JPQL) - Named 쿼리 JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. Named 쿼리 정적 쿼리..
Spring Data JPA - 메서드 이름으로 쿼리 생성
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 메서드 이름으로 쿼리 생성 쿼리 메서드 기능 3가지 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 애노테이션을 사용해서 레파지토리 인터페이스에 쿼리 직접 정의 메서드 이름으로 쿼리 생성 메서드 이름을 분석해서 JPQL 쿼리 실행 ex) 이름과 나이가 같은 회원을 조회하려면? 순수 JPA 리포지토리 public List findByUsernameAndAgeGreaterThen(String username, int age) { return em.createQuery("select m from Member m where m where m..
Spring Data JPA - 공통 인터페이스
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 공통 인터페이스 설정 원래는 스프링에서는 JavaConfig로 설정해야한다. @SpringBootApplication @EnableJpaRepositories(basePackages = "study.datajpa.repository") public class DataJpaApplication { public static void main(String[] args) { SpringApplication.run(DataJpaApplication.class, args); } } 스프링 부트에서는 다행히도 생략이 가능하며 @SpringBootApplication가 적용된 파일의 패..
Spring Data JPA - 순수 JPA 기반 리포지토리 만들기
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 순수 JPA 기반 리포지토리 만들기 CRUD 기능 만들기 MemberJpaRepository.class @Repository public class MemberJpaRepository { @PersistenceContext private EntityManager em; public Member save(Member member) { em.persist(member); return member; } public void delete(Member member) { em.remove(member); } public List findAll() { return em.createQu..
Spring Data JPA - 예제 도메인 모델과 동작확인
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 예제 도메인 모델과 동작확인 여러 개의 멤버가 하나의 팀에 소속될 수 있다. (다대일) 하나의 팀에는 여러 명의 멤버가 소속될 수 있다. (일대다) ERD에서 외래키는 다(N)쪽인 멤버에게 만들어진다. Member.class @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = {"id", "username", "age"}) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Lo..
Spring Data JPA - 프로젝트 환경 설정
·
공부/JPA
Spring Data JPA 게시글은 대부분 인프런의 김영한님의 강의인 '실전! 스프링 데이터 JPA' 기반으로 내용을 정리했습니다. 프로젝트 환경 설정 https://start.spring.io/ Project : Gradle Project Language : Java Spring Boot : (22.07.24 기준) 2.7.2 Group : study Artifact : data-jpa Java : 11 (강의에서는 딱히 선택하는 부분이 나오지 않았지만 일단 나는 11을 선택했다.) Dependencies Spring Web Spring Data JPA H2 Database Lombok HelloController 테스트로 컨트롤러를 하나 만들어서 잘 매핑되는지 확인 @RestController pu..
방통대 컴퓨터과학과 편입 후 첫 2학기.. 수강신청을 했다.
·
방통대 컴퓨터과학과/잡담
사실 휴학할까 말까 고민을 많이 했다. 왜냐면 지금 할 일이 너무 많기 때문에 몸이 두 개라도 모자랄 것 같았기 때문이다. 할 일들과 해야 할 일들을 정리하자면 할 일 대형 프로젝트 파견(서울을 떠나 수원 살이 중이다.) 한이음 공모전 개발 Spring JPA 공부 새로 교육 신청한 것들(5개) 해야 할 일 코테 공부 구매한 책 읽기 HTTP 완벽 가이드(같이 일하는 분에게 일단 읽어보라고 빌려줬긴 함) 운영체제 공룡 책 리액트를 다루는 기술 그림과 실습으로 배우는 도커&쿠버네티스 자바의 정석(나는 아직도 자바를 잘 모르는 거 같아..) 객체지향의 사실과 오해(김영한님이 추천해줘서 구매) 할 일과 해야 할 일을 나눈 기준은 할 일은 꼭 해야할 것, 해야할 일은 조금 나중에해도 당장 큰 문제는 없는 것들이..
MAC OS에 MySQL 설치하기
·
공부/기타
맥북에 MySQL 설치하기 내 맥북 정보 2019년도에 산 15인치 맥북 프로 인텔 CPU이다. MySQL 설치 홈페이지 접속 https://dev.mysql.com/downloads/ MySQL Community Server 클릭 애플 CPU면 제일 첫 번째꺼를 다운하면 된다. 인텔 CPU는 Select OS Version에서 macOS 12 (x86, 64-bit)를 선택 후 제일 첫 번째 파일을 다운하면 된다. finder에서 다운한 파일을 더블클릭 - 상자 모양이 또 새로운 창으로 나오면 상자 모양도 더블클릭하면 된다. 팝업 창이 뜨면 '허용' 계속 - 계속 - 동의 - 설치 - 지문인식 비밀번호 유형 선택 비밀번호 입력 - Finish - 지문인식 MySQL 설치 확인 시스템 환경 설정 맥북 좌..
JPA 객체지향 쿼리 언어(JPQL) - 벌크 연산
·
공부/JPA
JPA 게시글은 대부분 인프런의 김영한님의 강의인 '자바 ORM 표준 JPA 프로그래밍' 기반으로 내용을 정리했습니다. 벌크 연산 벌크 연산 : 일반적으로 잘 알고있는 SQL의 UPDTAE, DELETE 재고가 10개 미만인 모든 상품의 가격을 10% 상승하려면? JPA 변경 감지 기능으로 실행하려면 너무 많은 SQL 실행 재고가 10개 미만인 상품을 리스트로 조회 상품 엔티티의 가격을 10% 증가 트랜잭션 커밋 시점에 변경감지 동작 변경된 데이터가 100건이라면 100번의 UPDATE SQL이 실행 예제 쿼리 한 번으로 여러 테이블 로우를 변경(엔티티) executeUpdate()의 결과는 영향받은 엔티티 수 반환 UPDATE, DELETE 지원 INSERT(insert into ...select, 하..