일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- API
- AWS
- Kubernetes
- CI
- entity graph
- Streams
- Kotlin
- K8s
- CodePipeline
- PAGING
- git
- transactionaleventlistener
- centos7
- bean
- spring
- cd
- offsetdatetime
- Entity
- JPA
- mirror maker2
- consumer
- Spring Data JPA
- kafka
- ECS
- producer
- spring kafka
- Spring JPA
- topic생성
- mysql
- QueryDSL
- Today
- Total
목록Spring Data JPA (11)
Yebali

페이징과 정렬 Spring Data JPA가 제공하는 페이징과 정렬 기능은 아래처럼 사용 할 수 있다. @GetMapping("/members") public Page list(Pageable pageable) { Page page = memberRepository.findAll(pageable); return page; } 파라미터로 "Pageable"을 받을 수 있다. 여기서 Pageable은 인터페이스이고, 구현체는 org.springframework.data.domain.PageRequest이다. 요청 파라미터 Pageable을 사용하는 URL에는 다음과 같은 요청 파라미터를 사용할 수 있다. /members?page=0&size=3&sort=id,desc&sort=username,desc pag..

도메인 클래스 컨버터란? HTTP 파라미터로 넘어온 Entity의 ID(PK)로 Entity객체를 찾아서 바인딩하는 기능이다. 도메인 클래스 컨버터 사용 전 @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(); } } PathVariable로 받은 ..

Auditing이란? 개발을 하다 보면 DB 테이블마다 꼭 들어가는 4가지 값이 있다. 등록일, 수정일, 등록자, 수정자 이다. Spring Data JPA에는 이 4가지를 자동으로 관리해주는 기능이 있다 순수한 JPA 순수한 JPA를 사용하여 등록일과 수정일을 관리하는 방법은 아래와 같다. BaseEntity Class @PrePersist, @PreUpdate 애너테이션을 이용해 자동으로 createdData와 udpatedDate를 관리하게 한다. @MappedSuperclass @Getter public class JpaBaseEntity { @Column(updatable = false) private LocalDateTime createdDate; //등록일 private LocalDateTi..

List result = memberRepository.findMemberCustom(); Spring Data JPA에서 Repository는 인터페이스만 정의하고 구현체는 스프링이 자동으로 생성한다. 만약 Spring Data JPA가 제공하는 인터페이스를 직접 구현하려고 한다면 구현해야 하는 기능들이 너무 많아 오히려 비효율적이다. 그렇다면 다양한 이유로 인터페이스의 메서드를 직접 구현하기 위한 대표적인 방법들은 아래와 같다. JPA로 직접 구현 (EntityManager) Spring JDBC Template 사용. Mybatis 사용. 데이터베이스 커넥션 직접 사용 QueryDSL 사용. 그중 JPA로 직접 구현하는 방법은 아래와 같다. JPA로 직접 구현 사용자 정의 인터페이스 public i..

벌크성 쿼리란? 벌크성 쿼리란 DB에서 여러 개의 레코드를 한 번에 추가/수정/삭제하는 쿼리를 말한다. 예를 들어 나이가 10인 레코드들의 나이를 1살씩 추가하는 벌크성 쿼리는 아래와 같다. UPDATE tbl_member SET age = 1 WHERE age = 10; JPA에서도 이런 벌크성 쿼리를 지원한다. 사용법 먼저 순수한 JPA를 사용한 벌크성 수정 쿼리는 다음과 같다. public int bulkAgePlus(int age) { int resultCount = em.createQuery( "update Member m set m.age = m.age + 1" + "where m.age >= :age") .setParameter("age", age) .executeUpdate(); retur..

Spring Data JPA는 다양한 반환 타입을 지원한다. 컬렉션 조회 List findByUsername(String name); 단일 조회 Member findByUsername(String name); 단일 Optional조회 Optional findByUsername(String name); 만약 결과가 없거나 많다면 컬렉션으로 조회 시 결과가 없다면 빈 컬렉션을 반환한다. 단일 조회 시 결과가 없다면 null을 반환한다. 단일 조회 시 2건 이상의 결과가 있다면 javax.persistence.NonUniqueResultException예외가 발생한다.