Spring/트랜잭션 4

[JPA] Spring Data JPA의 findById

https://akira6036.tistory.com/62 Spring Data JPA에서의 Transaction 및 수정 작업오늘의 주제는 다음과 같다. 다음 문장을 읽고 바로 그 질문에 대한 해답이 떠오른다면 본 게시글을 굳이 읽지 않아도 될 것이다. "Spring Data JPA에서, Service나 Repository 계층에 트랜잭션(Transaction)을akira6036.tistory.com일반적으로 Spring Data JPA의 findById 같은 리포지토리 메서드는 기본적으로 읽기 전용 트랜잭션 안에서 실행ehla.메서드 호출 시점: 리포지토리 메서드(findById)가 호출되면 스프링이 내부적으로 읽기 전용 트랜잭션을 시작하여 데이터베이스에서 해당 엔티티를 조회.메서드 종료 시점: 조..

Spring/트랜잭션 2025.02.06

@Transactional

✏️  Spring AOP프록시 패턴: 어떤 객체를 사용하고자 할 때 해당 객체를 대리(proxy)하는 객체를 통해 접근하는 방식.  [Spring] AOP와 @Transactional의 동작 원리오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은velog.iotarget에 대한 호출이 들어오면 AOP proxy가 이를 가로채서(intercept) 가져온다.AOP proxy에서 Transaction Advisor가 commit 또는 rollback 등의 트랜잭션 처리를 한다.트랜잭션 처리 외에 다른 부가 기능이 있을 경우 해당..

Spring/트랜잭션 2025.02.06

org.hibernate.ObjectDeletedException: deleted instance passed to merge:

"deleted instance passed to merge" 오류는 삭제된 엔티티를 merge()에 전달하여 발생 해결 방안 삭제된 엔티티는 재사용하지 않도록 함.필요한 경우 새로운 인스턴스를 생성트랜잭션 및 비즈니스 로직을 재검토하여 삭제와 업데이트 작업이 충돌하지 않도록 해야 한다.삭제된 엔티티를 merge()에 전달엔티티가 한 번 삭제되면, 그 엔티티는 더 이상 영속성 컨텍스트에 속하지 않고, DB에서도 삭제된 상태가 됨.이 상태의 엔티티를 merge()로 병합하려고 하면 Hibernate는 "이미 삭제된 객체를 merge하려고 한다"고 판단하여예외를 발생시킴.  * em.remove(user)를 호출하면 user는 영속성 컨텍스트에서 제거된다.(Object is already marked for..

Spring/트랜잭션 2025.02.05

[Spring] 이벤트 실행, 비동기 처리

https://shyun00.tistory.com/86 53일차: @Async 비동기처리와 Spring Event (+ Transaction)오늘은 트랜잭션 구현 실습을 진행했다. 사실 스프링에서 트랜잭션은 @Transactional을 사용하면 쉽게 구현할 수 있다. 그래서 실습에서 몇가지 제약 조건을 걸고 트랜잭션을 구현했다. (Case) 회원가shyun00.tistory.com비동기 처리@EnableAsync : 클래스에 비동기 활성화. @Async : 비동기 처리 필요한 메서드에 붙여줌.  Event Object- 이벤트 객체가 생성되는 클래스.  Event Listener- 이벤트가 발행되면 수행될 작업을 구현.    :: EmailSender 클래스를 만들었음. 여기에서 이메일 보내는 역할을 함..

Spring/트랜잭션 2024.06.26