본문 바로가기
반응형

Transactional5

@Transactional 사용시 주의 사항4 (propagation(전파속성) 에 대해) 이전 포스팅에서 Transactional annotation 설명 시 propagation에 대해 다룬적이 있다. 간단히 언급만 되었어서 자세하게 하나하나 설명이 들어갈 포스팅이다. 사용법은 아래와 같다. @Transactional(propagation = 아래 속성) 속성 설명 비고 Propagation.REQUIRED 따로 지정을 해주지 않으면 default 부모 트랜잭션 내에서 실행하며 부모가 없으면 새롭게 생성을 하여 자신이 부모가 된다. 예외발생시 예외가 전파되며 상위로 올린다. Propagation.REQUIRES_NEW 실행할때 새롭게 Transactional 을 생성한다. 기존에 부모 Transactional 로 묶여있더라도 별개로 작동하여 부모와는 무관하게 돌아간다. 예외 발생해도 상위 .. 2023. 11. 14.
@Transactional 사용시 주의 사항3 (Proxy 관련 // private 금지, 트랜잭션 분리) 이전 포스팅에서 Transactional 에 대한 설명도 다룬적이 있고 주의사항에 대해서 다룬 글이 있다. 자세한 내용은 참고 포스팅 참고 바란다. 이번 포스팅에서 다룰 내용은 Transactional annotation을 선언할때 주의할 점이다. 1. private 로 선언된 메서드에 transactional 금지 Transactional 은 CGLIB 이 Proxy를 생성하여 호출을 하게 된다. CGLIB이 Transactional 이 걸려있는 메서드를 잡기 위해서는 외부에서 접근이 가능해야한다. 그리하여 private 로 선언 하면 해당 메서드에 접근을 못하여 transactional이 적용이 안된다. 2. 동일 Bean안에서(class) 여러 트랜잭션 금지 Transactional 은 AOP 기반.. 2023. 11. 4.
@Transactional 사용시 주의 사항2 (내부호출 / AOP 내부호출) 이전 포스팅에서 Transactional annotation에 대해서 다뤘었다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 해당 포스팅에서 언급했었고, Spring AOP 기능에서 이슈가 있는 내부호출에 대한 내용을 다뤄볼 것이다. 먼저 아래 코드를 읽어보면, public class TestTransactionAnnotationController { public void transactionalTest() { serviceA.insertValue(); this.internal(); } @Transactional public void internal() { serviceA.insertValue(); serviceA.insertValue(); serviceA.insertValue(); throw new.. 2023. 7. 11.
@Transactional annotation spring에서 사용하는 annotation 중 하나인 이 Transactional annotation에 대해 소개하려고 한다. 사용은 메서드 상단에 설정을 해준다. 예제는 아래와 같다. @Transactional public void interal() { serviceA.transactionalTest(); serviceA.transactionalTest(); serviceA.transactionalTest(); throw new ExceptionEx("errr"); } 이미 검색을 하고 들어온 순간부터 Transactional 이라는 애가 뭘 하는 애인지는 알거라 생각하지만 간단히 설명하면 스프링 내에서 AOP 원리로 동작을 하며 Transactional 로 묶어둔 메서드가 시작부터 종료할때까지 모든.. 2023. 7. 10.
@Transactional 사용시 주의 사항1 (checked Exception) 개발을 하다가 Transactional annotation을 사용하거나 본적이 있을것이다. 해당 어노테이션은 해당 메서드 내에서 어떤 작업들이 이루어지다가 에러가 날 경우 수행했던 작업을 모두 이전으로 돌려주는, Rollback시켜주는 작업이다. 하지만 모든 에러와 예외사항에 대해서 rollback이 되는것은 아니다. 해당 포스팅을 읽기 전에 에러와 예외에 관해서 아래 참고 포스팅을 읽고 오는것을 추천한다. 글을 읽고 왔다면 이제 에러와 예외(체크, 언체크) 에 대해서 구분을 할수 있을것이다. 자바 프레임워크에서는 기본적으로 Transactional 이 checked Exception 에 대해서는 롤백시키지 않도록 설계가 되어있다. 이유는 스프링 프레임워크가 EJB 관습을 따르기 때문이다. 만약 코드에서.. 2023. 2. 20.
반응형