본문 바로가기

학습 일지130

[Spring Boot + JPA] API 개발과 성능 최적화 - 4. OSIV와 성능 최적화 📌 OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true (OSVI 활성화 :: 기본값) 서버 구동 시 다음과 같은 warn로그가 남는 것을 확인할 수 있고 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. WARN 27128 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be perf.. 2023. 5. 17.
[Spring Boot + JPA] API 개발과 성능 최적화 - 3. 컬렉션 조회 최적화 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자. Order 기준으로 컬렉션인 OrderItem와 Item 이 필요하다. 앞의 예제에서는 toOne(OneToOne, ManyToOne) 관계만 있었다. 이번에는 컬렉션인 일대다 관계 (OneToMany)를 조회하고, 최적화하는 방법을 알아보자. 📌 주문 조회 V1 : 엔티티 직접 노출 @RestController @RequiredArgsConstructor public class OrderApiController { private final OrderRepository orderRepository; @GetMapping("/api/v1/orders") public List orderV1() { List all = orderRepository.fin.. 2023. 5. 16.
[Java] 리플렉션(Reflection)이란 스프링과 JPA를 학습하던 중 Reflection이라는 개념이 자주 등장하여 정리하기 위해 포스팅을 하게 되었다. 스프링은 어떻게 실행시점에 빈을 주입할 수 있는 걸까? JPA의 Entity는 왜 꼭 기본 생성자를 가져야만 할까? 📌 Reflection 구체적인 클래스 타입을 알지 못해도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API 자바에서는 컴파일러가 자바코드를 바이트코드로 바꿔주고 클래스로더는 바이트코드를 읽어 JVM 메모리 영역에 저장하게 된다. 리플렉션은 이 JVM 메모리 영역에 저장된 클래스의 정보를 꺼내와서 필요한 정보들 생성자, 필드, 메서드들을 가져와 사용하는 기술이다. 📌 Reflection은 왜, 어디에서 사용할까? Why 개발자 입장에서 소스코드를 작성할.. 2023. 5. 12.
객체지향 프로그래밍이란 알고 있지만 막상 설명할 수 없는 기본 개념을 정리하기 위해 포스팅을 하게 되었다. 📌 객체지향 프로그래밍 :: OOP 객체지향 프로그래밍(Object-Oriented Programming)은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. * 객체 : 현실에 무언가를 추상적으로 표현한 것 📌 OOP의 특징 1. 추상화 클래스들의 공통적인 특성(변수, 메서드)들을 묶어서 표현하는 것 2. 캡슐화 데이터 구조와 데이터를 다루는 방법들을 하나의 캡슐 형태로 결합시켜 데이터와 코드의 형태를 외부로부터 알 수 없게 하는 것 3. 상속 상위 요소의 특징을 하위 요소가 물려받는 것 4. 다형성 하나의 변수명, .. 2023. 5. 11.