[Dapper.Net] #0 - Dapper.Net 이란?

537

What is the Dapper

이번 프로젝트에서는 안정성도 중요하지만 가장 중요한 포인트가 성능 이다. 따라서 가능하면 가볍고, 빠른 라이브러리들을 사용해야 하는 기준이 존재한다.

처음에는 MyBatis.Net 을 사용해서 DAC Layer 를 처리하는 것으로 프로토타입 진행을 했지만, 거의 대부분의 로직은 Stored Procedure 상에 존재하기 때문에 MyBatis.NET 에서 제공하는 SQL Manipulation 등의 장점을 활용하지 못하고 거의 Entity Mapping 정도만 활용할 수 있는 수준이 되었다.

이런 상황에서 활용도 대비 무거운(?) 것이 되어버린 MyBatis.NET 의 대안을 검색하던 중에 Dapper.NET 이라는 Micro-ORM 라이브러리를 찾게 되었다.

Dapper.Net 은 오픈소스로 경량 Object Mapper 라이브러리라고 생각하면 된다.

Dapper.Net의 핵심은 성능 으로 순수한 ADO.NET 을 이용한 속도 (SqlDataReader 사용)와 거의 근접한 성능을 보여준다.

장점

  • Stack Overflow 팀에서 유지보수를 진행하기 때문에 상당히 많은 Extension 들이 존재한다.
  • ADO.NET 을 기반으로 Data to Strong typed Entity 로 전환만 제공하므로 가볍다.
  • 초기 진입 장벽이 거의 없다.

단점

  • 장점에 비해서 널리 이용되는 것 같지는 않다. (물론 이를 기반으로 하는 골수 팬들은 많아 보인다)
  • ADO.NET 을 기반으로 하는 것과 같이 직접 SQL 문장을 다뤄야 한다. 즉, 도메인 구조가 바뀌면 SQL 문장을 바꿔줘야 한다. (코드 수정이 불가피 하다)
  • 하나의 Row 가 하나의 Entity에 Mapping 되므로 Nested Entity 등의 복잡한 구조는 추가적인 작업을 해 줘야 한다.

결론

현재 국내에는 많은 자료들이 없지만 외국의 수 많은 확장들을 보면 나름대로 어느 정도의 안정성은 확보가 되어 있은 듯 하여 상대적으로 가볍고 빠른 Dapper를 이용해서 프로젝트를 진행해 보도록 한다.

진행하면서 Dapper.NET 에 대한 샘플들과 문제점 해결등에 대한 자료를 게시해 보려고 한다.


References

Written by Morris (ccambo@gmail.com - MSFL)


공유하기