트랜잭션
-
@Transactional 사용 시 주의해야 할 사항들스터디 노트 2023. 12. 4. 16:57
@Transactional 애너테이션은 스프링 AOP를 사용해 동작합니다. AOP 위빙이 되지 않은 채 대상 메서드가 실행되어도 알기가 어렵습니다. 즉, 대상 메서드가 실행되었지만, 어드바이스가 정상적으로 실행되지 않을 수 있다는 말이 됩니다. 여기서 개발자가 쉽게 실수하는 두 가지 주의 사항과 사용할 때 유의점을 살펴보도록 하겠습니다. ✅ public 접근제어자로 선언된 메서드만 @Transactional 애너테이션이 동작합니다. final이나 private 접근제어자로 선언된 메서드는 프록시로 만들 수 없기 때문에 애너테이션을 선언해도 정상동작하지 않습니다. ✅ 스프링 빈으로 주입된 객체의 메서드를 호출해야 합니다. 당연하겠죠. 우리는 스프링 프레임워크 위에서 동작하게 됩니다. ApplicationC..
-
@Transactional 애너테이션에 대하여스터디 노트 2023. 12. 4. 13:09
스프링 프레임워크에선 데이터베이스 트랜잭션 기능을 사용할 수 있는 Transactional 애너테이션을 제공합니다. 이 애너테이션은 JPA가 아닌 스프링 프레임워크에서 제공하는 기능입니다. 트랜잭션은 영속성 프레임워크의 종류와 상관없는 관계형 데이터베이스의 기능이기 때문에 JPA/Hibernate도 결국 SQL쿼리로 데이터를 영속하므로 트랜잭션을 사용할 수 있지요. 다음은 Transactional 애너테이션 코드입니다. @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Transactional { ... } Transactional ..
-
Transaction이 뭐길래?스터디 노트 2023. 10. 19. 13:25
개발을 하다보면 늘 듣는 말이 있습니다. '트랜잭션 관리를 잘 해야 해!' 대체 트랜잭션이 무엇이길래 우리는 트랜잭션 관리를 해야만 하는 걸까요? 📌 트랜잭션(Transaction)이 대체 뭐길래? 그럼 트랜잭션이라는게 대체 뭘까요? 트랜잭션의 사전적 의미는 '데이터베이스의 상태를 변화시키기 위한 수행 작업의 단위, 즉 더 이상 쪼갤 수 없는 최소 작업 단위를 말한다'입니다. 그래서 트랜잭션의 최종 단계는 'commit'또는 'rollback' 중 하나가 되어야 합니다. 만약 비즈니스 처리가 모두 성공한다면? 트랜잭션의 결과는 'commit'의 성공이 되어야 합니다. 만약 비즈니스 처리가 중간에 실패한다면? 트랜잭션의 결과는 'rollback'으로 실패되어야 합니다. 즉, 비즈니스 로직이 실행 중 어떠한..