나는 빈혈 도메인 모델을 중심으로 내 애플리케이션을 디자인하기 위해 많은 리치 객체를 가지고 있었고, 커다란 트랜잭션 인식 서비스 레이어에 주입했다. 이 패턴을 트랜잭션 스크립트라고합니다. 절차 코드로 이어지기 때문에 좋은 방법으로 간주되지 않으므로 도메인 중심 디자인으로 이동하고 싶었습니다.도메인에서 구동되는 디자인과 스프링 환경에서의 트랜잭션
웹에서 기사 몇 편을 읽은 후 Chris Richardson의 Parleys에 대한 이야기를 듣고 POJO의 DDD 챕터 읽기에서 나는 큰 그림을 얻었습니다.
문제는 내 응용 프로그램에서 트랜잭션을 구성하는 방법입니다. 그의 책 Chis 리처드슨 상태 :
지금까지 좋은프리젠 테이션 계층은 I 이전 장에서 설명 된대로 외관을 통해 직접 또는 간접적으로 도메인 모델을 호출하여 사용자의 브라우저에서 HTTP 요청을 처리 중 하나 POJO이다 또는 EJB. InfoQ article 상태에
하지만 Srini Penchikala :
일부 개발자들은 가난한 디자인입니다 DAO 클래스의 트랜잭션을 관리하는 것을 선호합니다. 따라서 트랜잭션이 여러 도메인 객체로 확장되는 유스 케이스를 관리하는 유연성을 제공하지 않는 너무 세밀한 트랜잭션 제어가 발생합니다. 서비스 클래스는 트랜잭션을 처리해야합니다. 이 방법은 트랜잭션이 여러 도메인 객체에 걸쳐있는 경우에도 대부분의 사용 사례에서 Service 클래스가 제어 흐름을 처리하므로 서비스 클래스가 트랜잭션을 관리 할 수 있습니다.
그래, 내가 올바르게 이해한다면, 저장소 클래스는 트랜잭션이 아니어야한다. 서비스 계층 (이제는 훨씬 더 얇은)은 트랜잭션 스크립트 패턴으로 사용되기 때문에 트랜잭션 적이다. 그러나 도메인 객체가 표현 계층에 의해 직접 호출되면 어떻게 될까요? 내 도메인 객체가 트랜잭션 동작을 가져야한다는 의미입니까? Spring 또는 EJB 환경에서이를 구현하는 방법은 무엇입니까?
이것은 나에게 이상한 것 같아서 누군가가 분명히 밝히면 행복 할 것입니다. 고맙습니다.
모든 종류의 DI + ORM을 고려하기 때문에 자바 태그를 추가했습니다. (자바뿐만 아니라 귀하의 컨텍스트도 마찬가지입니다.) – Bozho