2012-04-13 2 views
1

성능상의 이유로 데이터베이스에 복잡한 비즈니스 로직을 배치해야하며 리포지토리 패턴을 사용하고 있습니다. 질문은 - 저장소에서이 비즈니스 로직을 호출해야합니까? 리포지토리는 BL과 데이터 저장소 (CRUD 및 쿼리 메서드 만 포함해야 함) 사이의 조정자이므로 BL을 인식해서는 안됩니다. 당신은 어떻게 생각하십니까?리포지토리 및 db 관련 비즈니스 로직

+0

"일부 복잡한 비즈니스 로직을 db에 배치하십시오"=> 저장 프로 시저를 의미합니까? – guillaume31

+0

예, SP를 말합니다. – andrew

답변

2

저장소의 책임은 쿼리하거나 추가 할 엔터티의 메모리 내 모음과 유사합니다. 어떤 종류의 비즈니스 로직에 대해 이야기하고 있는지 모르겠지만 리포지토리에 도입 한 경우 단일 책임 원칙을 위반할 가능성이 있습니다. 이것은 저장소 코드에 변경해야 할 많은 이유, 응집력이 덜해지기 때문에 여러 가지 이유가있을 수 있습니다.

데이터베이스에 비즈니스 로직이있는 저장 프로 시저가있는 경우, 비즈니스 코드를 분리하여 유지하기 위해 호출 코드와 db 사이에 일종의 인터페이스를 도입하는 것이 좋습니다. 그 목적이 데이터를 지속하는 대신 비즈니스 로직을 트리거하는 것이기 때문에 저장소가 아니지만 구현은 인프라 서비스의 형태를 취할 수 있습니다.

모의 데이터베이스를 사용하여 별도로 코드를 테스트하고 다른 DBMS를 가리 키도록 db 액세스 인터페이스의 다른 구현으로 전환 할 수 있습니다. 또는 저장 프로 시저를 포기하기로 결정한 경우 객체로 전환 할 수도 있습니다. 어떤 점에서.

관련 문제