4.4.2 SQL 저장소
이제 데이터베이스 스키마가 어떻게 생겼는지 알았으니, 데이터베이스를 위한 IReservationsRepository 인터페이스를 구현할 수 있습니다. 예제 4-19는 제가 구현한 것입니다. 다만, 앞에서 이야기했듯 저는 객체 관계형 매퍼(ORM)를 그다지 좋아하지 않습니다.
기본적인 ADO.NET API의 경우 엔티티 프레임워크(Entity Framework)29에 비해 코드를 더 많이 작성해야 한다고 생각할 수 있지만, 코드 작성 속도는 중요하지 않습니다. 코드 가독성을 최적화하는 데에도 객체 관계형 매퍼를 사용하는 것이 더 읽기 쉽다고 생각할 수 있습니다. 이 부분은 어느 정도 주관적인 판단이 개입되는 부분이라고 생각합니다.
원한다면 객체 관계형 매퍼를 사용해도 됩니다. 중요한 건 그게 아니라, 구현의 세부 사항30에 의해 도메인 모델[33]이 오염되지 않도록 해야 한다는 점입니다.
예제 4-19의 구현에서 제가 가장 좋아하는 부분은 쉽게 변하지 않는다는 점입니다. 이 구현은 상태를 저장하지 않고, 스레드에 안전한 객체입니다. 따라서 단일 인스턴스를 생성한 후에 애플리케이션 수명 동안 재사용할 수 있습니다.