@Transactional
-
트랜잭션 (feat. @Transactional)Spring 2021. 12. 18. 18:18
트랜잭션이란 비지니스 로직에서 쪼개질 수 없는 하나 단위의 작업을 말한다. (DB상태 변화를 위해 행하는 작업의 작은 단위) ACID원칙 트랜잭션에는 네가지 원칙이 있다. 원자성 (Atomicity) : 트랜잭션은 하나의 단위로 이루어져야 한다. (모두 성공시 실행, 하나라도 실패시 rollback처리) 일관성 (Consistency) : 트랜잭션 성공시 DB의 데이터는 일관성(같은 결과)을 지녀야 한다. 격리성 (Isolation) : 트랜잭션 처리 과정 중 외부의 간섭은 없어야 한다. (독립적 실행) 영속성 (Durability) : 트랜잭션이 성공하면 그 결과는 영속적으로 보관 되어야 한다. (영구 반영) 트랜잭션 관리 (범위) 트랜잭션의 경계는 프레젠테이션층과 비지니스 로직 층 사이에 존재하는 것..
-
JPA delete 쿼리가 실행되지 않을 때Spring 2021. 10. 26. 16:44
프로젝트 진행시에 JPA를 사용하면서 따로 쿼리설정을 해주지 않아도 findBy(column)의 형태가 가능하였다. 그래서 deleteBY(column)의 형태를 사용하려고 하였으나 데이터가 삭제되지 않았다 원인 EntityManager open -> SELECT 쿼리 실행 -> EntityManager closed -> DELETE쿼리 예외 발생 의 순으로 진행되기 되는데 이는 @Transactional 어노테이션이 붙어있는 JPARepository에 deleteBy...의 형태가 없기 때문이다. 해결 다음과 같이 사용하고자하는 deleteBy...에 @Transactional어노테이션을 붙여 해결하였다. public interface PostImageRepository extends JpaReposi..