-
바퀴를 만들지 말지어다.dev/! 2015. 9. 9. 23:20
.Net에서 Data Mapper를 쓸 일이 있어서 후보로 MyBatis.Net을 골랐지.
Java에서 써봤는데 XML이 정말 죽기보다 싫어서 직접 만들었더랬지. 간지나게~
NHibernate 나 Entity Framework 같은 ORM은 그때 당시 완전 오바라고 생각해서 쳐다도 안 봤어~
근데 말이야 이게 필요한 기능이 하나하나 추가가 되는 거야~ 처음엔 간단한 Object만 맵핑해주면 끝이었는데 이거를 List로 받아야 하고 int , string , enum 등 기본자료형으로도 받아야 했지. 어쨌든 내가 필요한 기능 그때그때 추가하며 몇 년을 잘 써왔어. 지금 봐도 MyBatis.Net보다는 존니 편해~ 지금도 존니 잘 돌아가~
그러던 중 내가 만든 놈은 성능과 편의성은 어느 정도일까라는 생각이 드는 거야~ 그래서 비슷한 것들을 찾아서 비교해봤지.
- MyBatis.net
- java 진영에서 넘어왔다. 모르면 병신
- Dapper.net
- StackExchange에서 만들어서 지들이 쓰다 GitHub에 공개했다.
- 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덕후들 다 드루와~~~
댓글
- MyBatis.net