일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- spring webflux
- Kafka
- 자료구조
- Algorithm
- JPA
- Galera Cluster
- Heap
- 백준
- 디자인 패턴
- 알고리즘
- 네트워크
- react
- MSA
- redis
- OS
- 컴퓨터구조
- design pattern
- Data Structure
- 운영체제
- Spring
- Proxy
- c언어
- C
- Java
- mongoDB
- JavaScript
- 파이썬
- MySQL
- 자바
- IT
- Today
- Total
목록전체 글 (215)
시냅스

예외와 트랜잭션 커밋, 롤백 정책 예외 발생시 스프링 트랜잭션 AOP 는 예외의 종류에 따라 트랜잭션을 커밋하거나 롤백한다. 언체크 예외인 RuntimeException, Error와 그 하위 예외가 발생하면 트랜잭션을 롤백한다. 개발자가 다루기 어려운 복구 불가능한 문제라는 판단이 이유이다. 체크 예외인 Exception과 그 하위 예외가 발생하면 트랜잭션을 커밋한다. 비즈니스 의미가 있을 때 사용한다. 클라이언트가 행동을 수정/변경한다면 예외를 회피할 수 있을 때를 의미한다. 스프링 트랜잭션 전파 트랜잭션이 각각 수행된다면 사용되는 DB 커넥션 또한 각각 다르다 로직 1에서 트랜잭션을 수행하면서 트랜잭션이 적용된 로직 2를 부른다면, 로직 1은 외부 트랜잭션, 로직 2는 내부 트랜잭션이라고 말할 수 ..

선언적 트랜잭션과 AOP 개발자는 트랜잭션 처리가 필요한 곳에 @Transactional 애노테이션만 붙여주면 된다. @Transactional 애노테이션이 특정 클래스나 메서드에 하나라도 있다면 실제 객체 대신에 트랜잭션을 처리해주는 프록시 객체가 스프링 빈에 등록된다. 스프링의 트랜잭션 AOP는 이 애노테이션을 인식해서 트랜잭션을 처리하는 프록시를 적용해준다. 위 케이스에서 tx()의 경우 프록시 객체가 호출되고 트랜잭션이 적용된다. nonTx() 는 트랜잭션이 없는 것을 확인할 수 있다. 트랜잭션은 구체적이고 자세한 것이 높은 우선순위를 가진다. e.g. 클래스 < 메서드 만약 트랜잭션이 적용되지 않은 함수 내부에서 트랜잭션이 적용된 함수를 호출한다면 트랜잭션이 적용되지 않는다. 객체.externa..

Spring Data JPA CRUD + 쿼리 여러 데이터베이스에 동일한 인터페이스를 제공한다. 메서드 이름으로 쿼리를 생성한다. 스프링에서 id 값만 넘겨도 도메인 클래스로 바인딩된다. 용례 - 스프링 데이터 JPA 적용 public interface SpringDataJpaItemRepository extends JpaRepository { // 각각 객체와 PK이다. List findByItemNameLike(String itemName); List findByPriceLessThanEqual(Integer price); // 쿼리 메서드 (아래 메서드와 같은 기능 수행) List findByItemNameLikeAndPriceLessThanEqual(String itemName, Integer p..