SPRING (SPRINGBOOT)
JPA는 왜 트랜잭션을 강제할까?
JPA의 EntityManager와 트랜잭션 개념을 공부하던 중, 하나의 의문이 생겼다.EntityManager는 애초에 데이터베이스에 대한 CRUD 작업을 객체지향적으로 처리하기 위해 설계된 것인데,정작 DB에 데이터를 쓰는 persist(), remove() 같은 작업을 수행할 때 트랜잭션이 없으면 정상적으로 동작하지 않거나 에러가 발생한다는 것이다.하지만 트랜잭션은 본래 DB와는 무관하게, 어떤 작업 단위를 원자적으로(One or Nothing) 처리하기 위해 존재하는 개념 아닌가?그렇다면 EntityManager로 DB 작업을 하면서 트랜잭션이 없으면 안 된다는 것이 설계 관점에서 자연스러운 것일까, 아니면 비정상적인 강제성일까?이런 구조가 단지 구현상의 제약인지, 아니면 JPA의 의도된 철학인지..
2025. 4. 19. 20:16