일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS
- PAGING
- K8s
- offsetdatetime
- mysql
- kafka
- cd
- producer
- bean
- Kubernetes
- centos7
- QueryDSL
- consumer
- Spring JPA
- entity graph
- topic생성
- mirror maker2
- CI
- git
- spring kafka
- Spring Data JPA
- spring
- Streams
- API
- CodePipeline
- JPA
- ECS
- transactionaleventlistener
- Kotlin
- Entity
- Today
- Total
목록spring (14)
Yebali

일단 JPA란? Spring Data JPA를 알기 전 우선 JPA에 대해 알아야 한다. JPA란 Java Persistentce API의 약자로 JAVA에서 관계형 DB를 사용하는 방식을 정의한 '인터페이스'이다. 말 그대로 인터페이스이기 때문에 구현체가 없다. Hibernate란? Java로 서버를 조금이라도 공부했다면 Hibernate를 들어봤을 것이다 Hibernate는 JPA의 구현체의 한 종류이다. 표준으로 사용되는 구현체이며 마음에 들지 않는다면 다른 구현체를 사용하거나 직접 구현하는 것도 가능하다. Spring Data JPA란? Spring Data JPA는 JPA를 한 단계 더 추상화시켜 개발 용이성을 상당히 올려주는 인터페이스이다. Spring Data JPA는 'Repository'..

OSIV란? Open Session In View의 줄임말. 하이버네이트에서 사용하는 단어이다. JPA에서는 Open EntityManager In View가 정식 명칭이지만 관례상 OSIV라고 한다. OSIV는 영속성 컨텍스트의 생존 범위를 지정하는 것이다. OSIV ON! 'spring.jpa.open-in-view : true(기본값)'일 때는 커넥션 시작부터 API응답이 끝날 때까지 영속성 컨텍스트가 유지된다. 위의 설정에서는 Controller에서도 지연 로딩을 사용 할 수 있다. 영속성 컨텍스트는 기본적으로 DB 커넥션을 유지하기 때문에 이것 자체가 큰 장점이지만 DB커넥션을 오랫동안 사용하기 때문에 실시간 트래픽이 몰리면 커넥션이 말라버린다(부족해진다). OSIV OFF! 'spring.jp..

Collection조회란 Entity에서 일대다 관계(@OneToMany)를 조회하는 것이다. fetch join을 사용한 컬렉션 조회 Controller @GetMapping("/api/v3/orders") public List ordersV3() { List orders = orderRepository.findAllWithItem(); List result = orders.stream() .map(o -> new OrderDto(o)) .collect(toList()); return result; } Repository public List findAllWithItem() { return em.createQuery( "select distinct o from Order o" + " join fetch..

Spring에서 조회 API를 개발할 때 조회 성능을 최적화하기 위한 방법들. 1. Entity -> DTO로 변환해서 조회 @GetMapping("/api/v2/simple-orders") public List ordersV2() { List orders = orderRepository.findAll(); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) .collect(toList()); return result; } @Data static class SimpleOrderDto { private Long orderId; private String name; private LocalDateTime orderDate; private Order..

Spring을 이용해 API를 개발할 때 참고하기 적절 한 글. 예시에서 아래 Member라는 Entity를 사용한다. @Data @Entity public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @JsonIgnore @OneToMany(mappedBy = "member") private List order = new ArrayList(); } 등록(Post) API @PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@Req..

Entity란? Entity란 DB에서 영속적으로 저장된 데이터를 자바 객체로 매핑하여 '인스턴스의 형태'로 존재하는 데이터를 말한다. 쉽게 말해 DB와 직접 매핑되는 자바 객체이다. JPA를 사용할 때 Entity 클래스의 멤버 변수(프로퍼티)들은 DB table의 Column으로 매핑되기 때문에 비즈로직의 중심에 있다. 이런 Entity를 설계시 주의할 점 몇가지를 알아보자 1. Entity에는 Setter를 사용하지 않는 것이 좋다. Entity가 영속성이 유지되는 도중 수정되면 그 값은 DB에 그대로 반영된다. 그렇기 때문에 Setter를 열어두고 값을 변경하는 경우에는 변경 포인트가 많아져 유지보수가 어려워 질 수 있다. Setter보다는 .change()등의 매서드를 별도로 만들어 사용하는 것..