
EntityManager를 빈으로 주입할 때 사용하는 어노테이션
@Autowired 대신 @PersistenceContext@PersistenceContext 로 지정된 프로퍼티에 아래 두 가지 중 한 가지로 EntityManager를 주입한다.
@PersistenceContext으로 EntityManager를 주입받아도 동시성 문제가 발생하지 않는다. @PersistenceContext 으로 주입받은 EntityManager를 Proxy로 감싼다.🔗 참고
@PersistenceContext
실무에서 양방향을 지양하는 이유는 사이드 이펙트 때문이다.
👎 비즈니스 로직에서 명확하게 통제되지 않은 사이드 이펙트는 유지보수하기 어렵다.
@OneToMany의 cascade, orphanRemoval ... 등 복잡하게 사이드 이펙트를 고려하고 예상하기 보다 사이드 이펙트를 유발하는 연관관계는 줄이자.
→ @ManyToOne 을 사용하자!