Programming/Languages (Java, etc)41 [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. [Java] Java 8 사용하기 : 람다와 스트림으로 리팩터링 목차 람다로 대체할 수 있는 코드 method reference로 한번 더 리팩터링 Streams를 활용한 declarative programming 람다와 OOP 디자인 패턴 https://kghworks.tistory.com/140 [Java] Java 8 사용하기 : 가독성과 유연성, 람다와 Streams API 목차 Java 8로 향상되는 가독성과 유연성 익명 클래스 -> 람다 표현식 람다 표현식 -> 메서드 참조 명령적 데이터 가공 -> Streams API 함수형 인터페이스 Java 8 이상의 버전을 사용하면서 legacy를 Java 8 kghworks.tistory.com 앞선 포스팅에서 Java 8이 제공하는 람다와 스트림에 대한 유용함을 간단히 알아보았다. 이번에는 기존 코드들을 람다로 .. 2023. 9. 23. 이전 1 2 3 4 5 ··· 7 다음