1. JPA Cache(1차 vs 2차 캐시)항목1차 캐시2차 캐시위치EntityManager (Session 단위)SessionFactory (Application 단위)레벨 Session-level Cache (Transaction-level Cache) SessionFactory-level Cache생명주기트랜잭션 단위애플리케이션 실행 기간설정 필요 여부기본 제공 (자동)수동 설정 필요목적동일 트랜잭션 내 중복 조회 방지여러 트랜잭션 간 객체 공유로 DB 접근 최소화 1차 캐시 :: PersistenceContext에 자동 존재2차 캐시 :: 캐시 제공자 설정 필요 (예: EhCache, Redis 등)2. 2차 캐시 2.1 JPA의 2차 캐시:: SessionFactory 단위의 캐시로, 여러 ..

0. JPA 추상화 과정계층기술특징 QueryDSL타입 안전한 방식으로 쿼리를 작성할 수 있는 라이브러리고수준Spring Data JPA- JPA 위에 있는 스프링의 고수준 추상화 - Repository만 정의하면 자동 쿼리 생성- @Query, 페이징, 정렬, Query Method 지원 - CRUD 자동 구현~Hibernate (JPA 구현체)- JPA 구현체- JPA보다 더 많은 기능 제공 (2차 캐시, Dirty Checking, Lazy Loading 등) ~JPA (Java Persistence API)- 자바 ORM 표준 인터페이스 (Hibernate, EclipseLink 등 구현체 존재) - Entity, EntityManager, @Query 등 객체와 DB 자동 매핑~JDBC Temp..

1. ORM vs SQL Mapper더보기1.1 개념 비교구분ORMSQL Mapper대표 기술JPA, HibernateMyBatis, SqlSessionTemplate개발 패러다임객체(Entity) 중심SQL 쿼리 중심Persistence ContextO (영속성 컨텍스트 관리됨)XEntity 객체 여부O (DB 테이블 ↔ 객체 매핑)O (단순 DTO 또는 VO 사용)SQL 작성 방식자동 생성 (JPQL, Criteria API 등)직접 SQL 작성 (@Mapper, .xml)관계 매핑객체 간 관계로 정의 (@OneToMany, 등)조인/관계 모두 SQL로 처리장점- 생산성 높음- 도메인 모델 중심 개발 가능- 트랜잭션/캐시 자동 관리- SQL 제어 자유로움- 복잡한 쿼리 효율적- 명확한 DB 제어단점-..
1. CascadeType:: 연관된 Entity에도 동일한 영속성 작업을 전달시킬지 여부를 설정하는 옵션:: EntityManager(em)에 따른 부모 엔티티에 대한 조작이 자식 엔티티에 영향을 끼치는 것.:: 예시로, 부모 엔티티를 저장할 때, 자식 엔티티도 함께 저장되게 만들고 싶을 때 사용:: 영속성 전이의 경우 양방향 관계에서는 한쪽에만 설정:: 추가로, CascadeType.PERSIST / CascadeType.ALL 설정시, 부모를 persist()하면 자식도 같이 persist()됨:: 이후 flush() / commit 시점에 DB에 반영 @OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST) // cascade로 설정priva..
1. JPA의 연관관계 로딩 전략(LAZY)분류설명RDB연관 관계를 가진 데이터 조회 시, join을 통해 필요 데이터를 한번에 로딩객체연관 관계를 필드로 가지고 있기 때문에,연관된 객체가 많다면 불필요하게 많은 테이블이 조인됨1.1 JPA에서의 사용:: So, 위와 같은 문제 때문에 JPA에서는 LAZY(지연 로딩) 전략을 제공함:: 연관 관계 객체를 즉시 가져오는 것이 아닌 사용할 때 가져옴 -> 성능 최적화를 이룰 수 있음:: 연관 객체의 경우, 처음에는 Proxy 객체로 설정되어 실제로는 빈 깡통이지만 있긴 함:: 기본은 LAZY로 설정 후, 필요한 경우에 Join Fetch 또는 EntityGraph를 사용해 EAGER처럼 가져오는 방식을 사용하기구분LAZY (지연 로딩)EAGER (즉시 로딩)..

0. 들어가며:: Entity 객체가 DB 테이블과 다른 점 == JOIN이 아닌 객체 내 객체로 연관 관계를 가짐:: JPA에서는 Entity 객체에 DB 테이블의 모든 연관 관계를 객체와 어노테이션으로 명시해야 함고려 요소다중성 :: N:M 관계방향 :: 단 / 양 방향(객체 참조)연관 관계의 주인 :: FK 관리의 주체0.1 다중성:: 연관 관계에서의 N:M을 정의:: 연관 관계는 두 객체 사이의 관계이며, 양쪽의 각각 객체의 입장에서 대칭성을 가짐@OneToMany ↔ @ManyToOne@OneToOne ↔ @OneToOne@ManyToMany ↔ @ManyToMany로 정의되는데,ManyToMany는 복잡한 비즈니스 로직에 있어서 대응이 어려워 중간에 연결 테이블(Associate Table)에..

0. 들어가며,DB를 다루는 방법 중에서 JDBC(Java Database Connectivity)를 사용해서 DB를 직접적으로 사용한다면,Connection 객체 :: 개발자 개인이 트랜잭션에 대한 관리를 해야 함Statement 객체 :: 일일히 원하는 쿼리문을 Native하게 작성해야 함ResultSet 객체 :: 결과(ResultSet)에 대한 매핑 함수(RowMapper)를 정의해야, 객체로 사용가능등의 문제가 발생한다.이런 낮은 추상화를 갖는 JDBC의 한계와 해결책들을 표로 정리하면,문제점해결 기술설명1.트랜잭션 관리 직접Spring TransactionAOP 기반으로 트랜잭션 자동 관리 (@Transactional)2. 직접 SQL 작성MyBatis, JPA- MyBatis는 SQL 작성은..

1. AOP:: 관점 지향 프로그래밍(Aspect-Oriented Programming):: 애플리케이션에서 부가적인 기능을 모듈화하여 재사용핵심은 1)과 2)의 분리를 통한 수평적 프로그래밍 형성 1) 주요 핵심 기능 : 비즈니스 로직2) 부가적인 기능 : Logging, Security, Transaction, Exception Handling, Caching 등의 인프라 로직1.1 용어 정리구분내용1) Target- 부가 기능 적용 대상 (클래스, 메서드 등)- Advice가 적용될 실제 객체나 메서드2) Advice- 부가 기능을 실제로 구현하는 부분 - 부가 기능 구현체 (@Before, @AfterReturning, @AfterThrowing, @After, @Around)3) Join Poi..

0. 선언적 트랜잭션 @Transactional 사용 시 옵션@Transactional( propagation = Propagation.REQUIRED, // 1.6. Propagation 전파 isolation = Isolation.REPEATABLE_READ, // 1.7. Isolation Level 격리성 레벨 timeout = -1, // Timeout 트랜잭션 타임아웃 readOnly = false, // 1.8. ReadOnly R 만 허용, CUD 방지 rollbackFor = Exception.class, noRollbackFor = RuntimeExceptio..
0. 배경:: Spring Transaction 은 트랜잭션 추상화(PlatformTransactionManager)로 트랜잭션의 시작과 끝을 알려줌:: TransactionDefinition 은 트랜잭션 세부 옵션public interface PlatformTransactionManager extends TransactionManager { TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; // ...}Spring Transaction = 트랜잭션 동기화 + 트랜잭션 추상화트랜잭션 동기화 :: TransactionSynchronizationManage..
- Total
- Today
- Yesterday
- useMemo
- acas#acas7기
- memo
- asac7#asac
- useCallback
- asac#asac7기
- ASAC
- Nginx
- useReducer
- useLayoutEffect
- asac7기
- acac
- git
- useContext
- asac7
- useRef
- useState
- useEffect
- react
- ssh
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |