으로는
우리는
도메인 기반 설계 (DDD)는 도메인 모델 내에서 비즈니스 로직을 넣어야 상태 비즈니스 로직 (보통 전화 서비스 계층)에 대한 별개의 레이어가 말했다 . 그리고, 저를 믿으세요, 정말 좋습니다. 그것은 사용 사례가
후
@Service
public class BidServiceImpl implements BidService {
@Autowired
private ItemRepository itemRepository;
public void placeBid(Integer itemId, User bidder, BigDecimal amount) {
Item item = itemRepository.getById(itemId);
if(amount.compareTo(new BigDecimal("0.00")) <= 0)
throw new IllegalStateException("Amount must be greater than zero");
if(!bidder.isEnabled())
throw new IllegalStateException("Disabled bidder");
item.getBidList().add(new Bid(bidder, amount));
}
}
전에
그것은 정의 할 수 있습니다 트랜잭션 경계
을 구동
- 서비스 계층에 대한 작업 책에서 POJO에 의해 말했듯 도메인 기반 설계를 사용하는 경우
@Entity
public class Item implements Serializable {
private List<Bid> bidList = new ArrayList<Bid>();
@OneToMany(cascade=CascadeType.ALL)
public List<Bid> getBidList() {
return this.bidList;
}
public void placeBid(User bidder, BigDecimal amount) {
if(amount.compareTo(new BigDecimal("0.00")) <= 0)
throw new IllegalStateException("Amount must be greater than zero");
if(!bidder.isEnabled())
throw new IllegalStateException("Disabled bidder");
/**
* By using Automatic Dirty Checking
*
* Hibernate will save our Bid
*/
item.getBidList().add(new Bid(bidder, amount));
}
}
을 다음과 같이 9,
도메인 로직은 비즈니스 로직은 바로 이곳에 살고 쇼입니다. 그러나 가끔 인 경우 서비스 계층 내에 비즈니스 로직을 정의하는 것이 좋습니다.
"빈혈 도메인 모델"마틴 파울러에 의해이에서 가장 인용 기사의
확인 http://techblog.bozho.net/?p=180 – Bozho
관련 스레드보기 : http://stackoverflow.com/questions/2333307/should-enterprise-java-entities-be-dumb –