본문 바로가기

Programming/Languages (Java, etc)36

[Java] JDK 21 Virtual Threads 톺아보기 목차 OS 스레드와 Java Platform Thread Java Virtual Thread Virtual Thread 사용해 보기 Virtual Thread 효율적으로 사용하기 Java 21에 새롭게 추가된 Virtual Thread에 대해 알아본다. 먼저, 가상 스레드를 일목요연하게 정리해 주신 카카오 안정수(James.star)님께 감사드린다. 아래 링크를 통해 영상을 볼 수 있다. https://youtu.be/vQP6Rs-ywlQ 추가로 Oracle에서 제공한 Virtual Thread 문서를 참고하여 가상 스레드를 정리해 보았다. 예시코드는 모두 아래 깃헙에서 볼 수 있다. https://github.com/gihyeon6394/hello-java-virtualthread GitHub - gi.. 2024. 1. 4.
[JPA] JPA와 @Transactional @Transactional은 Spring AOP를 기반으로 동작하는 프락시이기 때문에 AOP에 대한 이해가 없다면 먼저 이해한 뒤 보길 바란다. 아래 두 포스팅을 참고해도 좋다. 2023.12.02 - [Programming/JAVA] - [Java] AOP 1편 - 핵심 기술 Proxy, Dynamic proxy, Factory bean [Java] AOP 핵심 기술 - Proxy, Dynamic proxy, Factory bean 목차 AOP란 프락시(Proxy)의 정의, 프락시 패턴 다이내믹 프락시 다이내믹 프락시 예제 한계 스프링의 ProxyFactoryBean : 어드바이저 Spring 3대 기술 (DI, PSA, AOP) 중 하나인 AOP는 프락시 기반으로 동작한 kghworks.tistory.. 2023. 12. 3.
[Spring] AOP 2편 - Spring의 AOP과 @Transactional 2023.12.02 - [Programming/JAVA] - [Java] AOP 핵심 기술 - Proxy, Dynamic proxy, Factory bean [Java] AOP 핵심 기술 - Proxy, Dynamic proxy, Factory bean 목차 AOP란 프락시(Proxy)의 정의, 프락시 패턴 다이내믹 프락시 다이내믹 프락시 예제 한계 스프링의 ProxyFactoryBean : 어드바이저 Spring 3대 기술 (DI, PSA, AOP) 중 하나인 AOP는 프락시 기반으로 동작한 kghworks.tistory.com 이전 포스팅에서 이어진다. 이번 포스팅에서는 트랜잭션을 스프링 AOP를 사용해 구현해 본다. 스프링이 제공하는 어노테이션 @Transactional을 사용해 더 직관적이고 간단.. 2023. 12. 3.
[Java] AOP 1편 - 핵심 기술 Proxy, Dynamic proxy, Factory bean 목차 AOP란 프락시(Proxy)의 정의, 프락시 패턴 다이내믹 프락시 다이내믹 프락시 예제 한계 스프링의 ProxyFactoryBean : 어드바이저 Spring 3대 기술 (DI, PSA, AOP) 중 하나인 AOP는 프락시 기반으로 동작한다. Spring AOP를 보기에 앞서, 프락시의 개념을 알아보고, 다이내믹 프락시를 통해 동적으로 프락시를 생성해본다. 팩토리 빈을 통해 다이내믹 프록시를 빈으로 등록해 Spring DI로 편하게 사용해 본다. 그리고 스프링 ProxyFactoryBean을 통해 어드바이저 (Advisor)의 개념을 익힌다. 이어지는 포스팅에서 스프링 AOP를 본격적으로 다룬다. AOP란? (Aspect Oriented Programming( 애플리케이션을 설계하다면 코드 여기저기.. 2023. 12. 2.
[JPA] Spring Boot JPA 초간단 CRUD 테스트 작성하기 목차 Spring initializr 의존성 추가 Datasource / Hibernate 설정 Entity 정의 테스트 추가 실행 개발환경 Java 17 Spring Boot 3.2.0 Gradle 8.4 H2 Database Spring Data JPA Lombok spring initializr 아래에서 개발환경에 맞게 스프링 프로젝트 생성 https://start.spring.io/ 의존성 추가 plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.sample.jpa' version = '0.0.1-SNAPSHOT.. 2023. 11. 29.
[Java] JPA N+1 원리 이해하기 목차 N+1 문제 정의 N+1 원인 1. 연관관계의 주인이 누구인가 N+1 원인 2. JPQL은 연관객체의 fetchType을 모른다 N+1 해결방법 정리 참고 포스팅에는 아주 간단히 아래 2개의 테이블을 사용한다. @Entity @Table(name = "team") public class Team { @Id private String id; private String name; @OneToMany(mappedBy = "team", fetch = FetchType.LAZY) private List members = new ArrayList(); // 생략 } @Entity @Table(name = "member") public class Member { @Id private String id; priv.. 2023. 11. 14.