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 작성은..

0. Annotation:: 소스코드에 추가적인 정보를 표기하는 메타 데이터로, 주석(라벨)로 생각하면 된다. 0.1 분류분류어노테이션설명1. Built-in Annotations @Override오버라이드된 메서드임을 명시@Deprecated더 이상 사용되지 않음을 표시@SuppressWarnings컴파일러 경고 미표기@FunctionalInterface함수형 인터페이스임을 명시@SafeVarargs제네릭 가변 인자(varargs) 사용 시, 타입 안정성 경고 억제2. Meta-Annotations@Target어노테이션을 어디에 사용할 수 있는지 지정 (예: 클래스, 메서드 등)@Retention어노테이션이 언제까지 유지될지 설정 (컴파일 타임 vs 런타임 등)@DocumentedJavadoc에 표시 ..

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..

0. 배경자바 EE 어플리케이션 개발 시, 로컬 트랜잭션과 글로벌 트랜잭션의 필요성에 의해 각각의 스펙과 구현들이 등장트랜젝션의 방식내용1. 로컬 트랜잭션 (Local Transaction)- 단일 데이터소스(단일 데이터베이스) + 단일 Connection 에 종속 :: 하나의 DB 연결만을 다루며, 트랜잭션이 하나의 DB 내에서만 수행- JDBC 기반에서 흔히 사용2. 글로벌 트랜잭션 (Global Transaction) - 다수 데이터소스(다수 데이터베이스) + 단일 Connection 종속성 제거 :: 여러 DB에서의 트랜젝션- 2PC (2-Phase Commit Protocol) 또는 XA 프로토콜로 커밋 / 롤백- JTA와 JNDI 기술을 통해 트랜잭션과 데이터소스를 연결하고 관리-..

0. JDBC Template:: JdbcTemplate 클래스로 제공,:: SQL 쿼리 실행, 트랜잭션 관리, 예외 처리 등을 자동화JDBC Template의 주요 기능내용 1. 간편 사용 / 간결한 코드- SQL 쿼리 실행을 간소화 - 내부적으로 Connection, Statement, ResultSet을 자동으로 관리 - SELECT, INSERT, UPDATE, DELETE 쿼리를 처리하는 메서드를 제공- 리소스를 명시적으로 close()할 필요 X / 예외 시, 자동으로 close() -> 코드가 간결2. 예외 처리- JDBC의 SQLExceptions을 Spring의 DataAccessException으로 변환 - 일관된 예외처리 O- DataAccessException은 SQLExceptio..
- Total
- Today
- Yesterday
- ssh
- asac7
- useRef
- acas#acas7기
- useContext
- useCallback
- useEffect
- useMemo
- git
- useLayoutEffect
- useState
- react
- Nginx
- useReducer
- asac#asac7기
- memo
- acac
- ASAC
- asac7#asac
- asac7기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |