ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 바퀴를 만들지 말지어다.
    dev/! 2015. 9. 9. 23:20

    .Net에서 Data Mapper를 쓸 일이 있어서 후보로 MyBatis.Net을 골랐지.

    Java에서 써봤는데 XML이 정말 죽기보다 싫어서 직접 만들었더랬지. 간지나게~

     

    NHibernateEntity Framework 같은 ORM은 그때 당시 완전 오바라고 생각해서 쳐다도 안 봤어~

    근데 말이야 이게 필요한 기능이 하나하나 추가가 되는 거야~ 처음엔 간단한 Object만 맵핑해주면 끝이었는데 이거를 List로 받아야 하고 int , string , enum 등 기본자료형으로도 받아야 했지. 어쨌든 내가 필요한 기능 그때그때 추가하며 몇 년을 잘 써왔어. 지금 봐도 MyBatis.Net보다는 존니 편해~ 지금도  존니 잘 돌아가~

    그러던 중 내가 만든 놈은 성능과 편의성은 어느 정도일까라는 생각이 드는 거야~ 그래서 비슷한 것들을 찾아서 비교해봤지.

     

    1. MyBatis.net
      • java 진영에서 넘어왔다. 모르면 병신
    2. Dapper.net
      • StackExchange에서 만들어서 지들이 쓰다 GitHub에 공개했다.
    3. KinMapper.net
      • 내가 만든거다. 이름 방금 지었다.

    퍼포먼스

    200Row를 IList<T> 형식으로 10회 Mapping 한 시간

    MyBatis.Net이 생각보다 존니 빠르네? 내껀 꼴등이다.

    편의성

    MyBatis.net

    일단 태생이 자바여서인지 셋팅부터 거지다.

    자바가 왜 자바냐면~ 자바로 개발하면 셋팅하다 하루 다 자바 먹어서 자바여~  ㅇㅋ?

    XML 만들고  개 염병을 하고 자바쪽은 XML을 너무 좋아해~

    어쨌든 사용방법은 Java에서 사용하는 것과 같다.  쿼리 xml파일 만들고 xml에 맵핑할 클래스 파라미터 디파인 하고~ 대충 말만 들어도 징글징글하지~ 그래서 쌤플 코드 안쓸라고~

    Dapper.net

    셋팅은 NuGet으로 스피드하고 쿼리&맵핑은 우아하고 심플하게~

    가장 맘에 드는 게 대소문자 구별 안 하고 알아서 잘 맵핑해준다.

    public class Dog
    {
        public int? Age { get; set; }
        public Guid Id { get; set; }
        public string Name { get; set; }
        public float? Weight { get; set; }
    
        public int IgnoredProperty { get { return 1; } }
    }            
    
    var guid = Guid.NewGuid();
    var dog = connection.Query("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });

    KinMapper.net

    셋팅은 Copy&Paste 쿼리&맵핑은 Mybatis.net의 메서드명을 가지며  파라미터는 ADO 코딩~

    var guid = Guid.NewGuid();
    var dog = connection.QueryforObject("select Age = @Age, Id = @Id",
                                              new SqlParameter[] { new SqlParameter("@Age", (int?)null) ,new SqlParameter("@ID", guid)});

     

    결론은.

    테스트 전에는 쓸만하면 내꺼 공개하려 했는데 안되겠다.  쪽팔려서~ 

    뭐 하나 만든다고 시간 버리지 마라~ 너보다 더 빠르고 더 쉽게 만들어 주면 그거 써라. 나도 내가 만든 거 다 버리고 Dapper로 바꿀꺼다.

    그래도 꼭 하겠다면 그냥 Dapper 소스 공개 됐으니까 이거 수정해라. 소스파일 달랑 하나다.

    그리고 MyBatis.net은 진짜 쓰지 말자. 쳐다도 보지 말자. 만약 내가 가는 어딘가에 MyBatis.net을 쓰는 곳이 있으면 가서 엎어버리자.

    MyBatis.net덕후들 다 드루와~~~

    댓글