PreTranctionCommint 이벤트에서 Nhibernate validation framework로 도메인 모델을 검증 할 수 있습니까? 가능한 경우이 행사를 어떻게 작성 할 수 있습니까?NHibernate와 NHibernate Validation
답변
발췌 아래
NHibernate에 유효성 검사기는 http://nhforge.org/wikis/validator/nhibernate-validator-1-0-0-documentation.aspx
NHibernate에 이벤트 기반의 검증에서 한 촬영이 내장 NHibernate에 이벤트 리스너. PreInsertEvent 또는 PreUpdateEvent가 발생할 때마다 리스너는 엔터티 인스턴스의 모든 제약 조건을 확인하고 예외가 발생하면 예외를 throw합니다. 기본적으로, 객체는 삽입 전에 그리고 NHibernate에 의해 트리거 된 모든 업데이트 전에 검사 될 것입니다. 이 에는 계단식 변경 사항이 포함되어 있습니다. 이는 가장 편리하고 쉬운 유효성 검사 프로세스를 활성화하는 방법입니다. 제약 조건을 위반하면 이벤트가 런타임에 InvalidStateException을 발생시킵니다. 여기에는 각 오류를 설명하는 InvalidValue 배열이 포함됩니다.
는 ... NHibernate에 확인 프레임 워크 도메인 모델의 유효성을 검사 할 수 있습니까?
실제로 domain model이있는 경우 유효성 검사 프레임 워크가 필요하지 않습니다. 즉, 객체는 외부 마법 검증 프레임 워크에 의존하지 않고 동작을 캡슐화하고 내부 불변성을 보호합니다. 도메인 개체는 first place에서 '유효하지 않은'상태가되지 않습니다. 그들이 오래 살면 '항상 지속 가능해야'합니다. 도메인 개체의 유효성은 데이터 액세스 라이브러리에 의해 해고 될 수도 안될 수도 있습니다. VALIDATION이 지나치게 일반화되고 컨텍스트에 종속되기 때문에 비즈니스 오브젝트 INVARIANTS에 대해 생각하기 때문에 VALIDATION에 대해 생각하지 않는 것이 좋습니다. 개체에 불변량을 올바르게 적용하려면 타사 프레임 워크가 필요하지 않습니다. 도메인 클래스를 유효성 검사 프레임 워크에 연결하지 않으면 구현하기가 어렵지 않습니다.
하지만 당신은 당신의 질문을 바꿔 경우 :
는 ... NHibernate에 확인 프레임 워크 anemic 도메인 모델의 유효성을 검사 가능을?
그렇다면 대답은 다음과 같습니다. 예, 멋진 결과를 얻으십시오! 하지만 복잡성이 커지면 여러 객체 필드, 별도의 도메인 서비스 등 복잡한 도메인 규칙을 적용해야 할 것입니다. '사용자 정의 유효성 검사기'를 작성하거나 포기함으로써 유효성 검사 프레임 워크에 점점 더 많이 결합됩니다. 그리고 프레임 워크에 의해 구현 된 몇 가지 규칙과 코드 기반 전체에 퍼진 다른 규칙들로 끝납니다. 이 answer과 DDD를 일반적으로 살펴볼 가치가 있습니다.
어때?
using(transaction...)
{
validationA();
validationB();
session.saveOrUpdate();(do some transaction)
}
설명과 함께 대답을 확장하십시오. –
- 1. xVal Validation with Nhibernate Validator
- 2. NHibernate와 유창한 NHibernate - 이것들을 사용할 수 있습니까?
- 3. NHibernate와 Enums
- 4. NHibernate와 python
- 5. 유창한 nHibernate와 SessionFactory
- 6. NHibernate와 구조체 맵
- 7. Nhibernate와 Spring에서 Lazy 속성로드하기
- 8. NHibernate와 generic 버전
- 9. NHibernate와 Memcached - 튜토리얼/예제
- 10. NHibernate와 ADO.NET 연결 풀링
- 11. 자 NHibernate와 SQLite는 예외
- 12. NHibernate Configuration 클래스를 Fluent NHibernate와 함께 사용하는 방법
- 13. NHibernate 오픈 세션을 DB에 연결하기 (NHibernate와 DB 세션 결합)
- 14. validation regularexpress
- 15. jquery validation
- 16. jquery validation
- 17. JavaScript Validation
- 18. Gridview Validation
- 19. NHibernate와 SetSessionAuth 감사 컬럼
- 20. NHibernate와 Distinct IQueryable 얻기
- 21. 자 NHibernate와 JQuery와
- 22. LINQ와 nHibernate
- 23. NHibernate와 WCF 직렬화
- 24. Fluent NHibernate와 친구 관계
- 25. 버전으로 NHibernate와 sql timestamp 컬럼
- 26. NHibernate와 MySQL Nullable 객체는 값을 가져야합니다.
- 27. NHibernate와 DTO
- 28. NHibernate와 값 의미가있는 객체
- 29. NHibernate와 컬렉션 타입
- 30. NHibernate와 Autofac으로 여러 데이터베이스 관리하기
감사합니다. Cole W.는 트랜잭션 커밋 이벤트에 자체 리스너를 작성할 수 있습니다. 그렇다면이 사건에 대해 유효성을 검사하는 올바른 방법입니까? – viky
nhibernate와 통합하도록 nhibernate validator를 설정하면 엔티티의 커밋시 유효성이 검사됩니다. –