'ibatis'에 해당되는 글 2건

  1. 2009.06.05 Hibernate VS iBATIS (2)
  2. 2009.02.06 화성에서 온 플랙셔, 금성에서 온 플래셔!
Think about it.2009.06.05 16:34

오픈소스 프레임웍 중 Persistence Layer 에서 많이 쓰이는 하이버네이트와 아이바티스에 대한 비교를 해 보겠습니다.
ASP.NET MVC 에서 Hibernate 를 임베딩 시켜 NHibernate 로 넣은것 같은데, 개인적인 생각에는 iBATIS를 넣는게 더 좋았을것 같습니다.

이유를 설명하자면. 우선 두 프레임웍 모두 우수 합니다. 무엇이 더 우수하냐 보다는 무엇이 더 적합하냐 라는 쪽으로 접근 해 보겠습니다. 우선 결론 부터 말씀드리면, 저는 iBATIS를 선호 합니다.

Hibernate 와 iBATIS 프레임웍은 흔이 이렇게 말 합니다.
Hibernate : ORM(Object Relation Mapper)
iBATIS : SQL Mapper

다시말해 하이버네이트는 객체 관계 매퍼입니다. 여기서 객체란 MVC 패턴으로 개발하는 프로젝트에서 엔티티 혹은 VO 를 뜻하기도 합니다. 즉 그 객체는 테이블과 1:1 매핑이 되기도 하고, 1:N, N:1 로 매핑이 되기도 합니다. 그리고, 아이바티스는 쿼리 매퍼 입니다. 반환되는 레코드셋을 VO의 필드와 매핑을 시켜주는 코드를 추가해 주면 됩니다.

개발 완료 후 수정이 빈번하게 일어나는 한국에서는 좀더 유연한 iBATIS를 더 선호 한답니다.

또 iBATIS를 가장 많이 필요로 하는 곳으로 보이는 우리나라의 SI 환경을 보면,
데이터베이스의 정규화가 제대로 이뤄진 경우를 보기가 쉽지 않은 것이 사실이다.
개발 초기에는 의도에 맞게 잘 설계하였다 하더라도 수많은 요구사항 변경에
맞닥뜨리면서 제대로 설계를 변경할 시간 일단 없이 빨리 수정 사항을 반영하다
보면, 어느새 데이터베이스는 처음과는 다른 복잡하고 이해하기 힘든 모습을 띄게
되는 일이 허다하다.

iBATIS는 다른 객체 관계 매핑 프레임워크들과는 달리 정형화된 테이블 구조에
의존하지 않고 SQL 구문의 실행 결과에 객체를 매핑하는 방식이다. 따라서 테이블
구조가 복잡해지고 정규화돼 있지 않더라도 테이블을 변경할 필요 없이 기존 개발
방법에서 사용한 SQL을 그대로 사용할 수가 있으며, SQL에 적용한 튜닝들도 모두
그대로 유지된다. 이러한 우리나리의 SI 환경에는 iBATIS가 더없이 적합한 퍼시스턴트
프레임워크라고 생각한다(저자들도 이러한 점을 많이 강조한다)

 - iBATIS in Action 손권남

사실 iBATIS에는 SQL Mapper만 있는게 아니라 DAO도 있지만, 추천하지는 않는다고 합니다.

두 프레임웍은 특징을 비교 해보면 다음 그림과 같습니다.

마지막의 커뮤니티 지원과 문서화 부분은 약간 개인적인 견해가 강한 부분이 있습니다. iBATIS in Action 책을 보면 그대로 따라하면 5분만에 셋팅을 할 수 있다고 합니다. 허나... 50분을 들여도 잘 안되는 부분이 있었습니다.
물론 제가 실력이 안되어서 그럴수도 있겠지만, 오픈소스 프레임웍은 셋팅이 정말 까다롭습니다. 그리고 책 그대로 따라해도 안됩니다. ㅡㅡ; 저자 분들께는 죄송 ㅎ

이렇게 따지면 뭐가 더 우수한지는 없습니다. 상황에 적절한 프레임웍을 골라서 사용하시면 됩니다.

단, 문제가 있긴 합니다. iBATIS의 알려진 문제로는 자바버전의 iBATIS는 운영중에 쿼리를 변경하게 되면 반영이 되지 않고 WAS를 재시작 해야 합니다. 아주 치명적인 문제죠. 여러 포럼에서 찾아봤지만 현재까지 나온 버전에서는 지원이 되지 않습니다. 하지만 iBATIS.NET에서는 잘~ 됩니다.

또한 에러 로그가 이상하게 찍힙니다. 예를 들어 디비가 오라클이고 쿼리의 마지막에 세미콜론(;)이 찍혀 있으면 ResultMap에 일치하는 항목이 없다는식의 메시지가 찍힙니다.

이러한 점을 고려 했을때 무조건 도입하는것 보다 테스트 프로젝트를 진행 하면서 적합하고 효율적이다고 판단이 될때 적용 하시는것이 올바르다고 봅니다.

게다가 Hibernate 같은 경우는 프로젝트 변경이 생기면 OR이 강결합 상태이므로 수정사항이 아주 많아 집니다.

저 개인적인 생각으로는 무엇이 좋고 나쁘고가 아니라 오픈소스 프레임웍을 도입해서 적용해본 결과 효과좀 봤다. 정도로 말씀드릴수가 있겠네요 ^^


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
Flex2009.02.06 14:38

2001년도에 아마도 플래쉬 버전이 4.0일때, 웹사이트 위에서 동작하는 플래쉬를 보고는
엄청난 충격을 받았다. 당시 거의 모든 사이트 들이 웹사이트에 애니매이션을 주고자 animated GIF 를 사용할 시대이다.

당시 와레즈 사이트들이 많이 활성화 되어 있던터라, 툴을 어렵지 않게 구할수 있었고, 직접 애니매이션을 만들어 봤는데 정말 쉽고 빠르게 다룰수 있게 되었다. 하지만 디자인 감각이 꽝인 나로서는 애니메이션을 만들고 아무리 화려하게 구현을 해도 이쁘지가 않고 아마추어 티가 확 났다. 그 후로는 바로 접었지만.. but, 4.0에 존재하는 단축키를 거의 익히고 나서... ㅎㅎ

얼마전에 같이 일하던 친구가 이직을 하면서 맡은 프로젝트가 FLEX 로 개발을 하는것이였는데, 또다시 충격을 받았다.
플렉스에대한 기초지식이 없던 나로써는 놀라울 따름이였다.
단지 플래쉬의 확장이라고 생각했는데, 그게 아니라 새로운 언어의 탄생이다. 물론 플래쉬에 기반을 두긴 하지만, 모든 클래스가 비슷해 보이긴 하지만 실제로는 완전히 다른 것이다.

플래셔들은 디자이너 출신이 대부분이기 때문에 플렉스로 넘어가기 힘들어한다. 물론 우리 플래셔도 플렉스로 넘어가는것을 어려워 한다.

플래쉬 개발자 커뮤니티들은 거의 ActionScript1이나 2 에 대한 이슈를 다루고 있는것이 사실이다.
AS3가 객체지향이라서 플렉스와 비슷하다고 생각하시는 분들이 많은데, 그건 잘못 알고 있는것 같다.

예전에 VB6.0으로 한참 개발할때 .Net Framework 이 나오면서 VB.NET을 해 봤는데, 폼하나도 제대로 띄우지 못한 기억이 난다.

그러므로, FLEX를 한다는것은 새로운 언어를 받아들인다는 생각으로 시도하는것이 좋다고 생각한다.
또한, 우리나라에서는 UX(User eXperience)를 좋아하기 때문에 대형 프로젝트도 FLEX로 구현되는 사례가 많다.

Adobe社 에서 내놓은 BlazeDS를 이용해서 FLEX에서 JAVA Object를 곧바로 호출할수 있는 방법을 제시한다.
그러면 Data Exchange를 위한 XML를 쓰지 않고, 곧바로 객체를 호출하여 값을 넘길 수 있는데
그러면서, 실제 FLEX는 MVC모델로 봤을때 View 로 깔끔하게 빠질수 있고, 자바코드는 Controller가 되며
Model은 Hibernate나 iBatis를 사용하게 된다. 거기다가 Spring Framework 을 얹으면 완벽한(?) 모델이 될것이다.

그러므로, FLEX는 자바 또는 닷넷 프레임웍에서 앞으로 뷰(View)단을 처리할 중요한 역할을 할것이다.
저작자 표시 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바