개발

<img src="http://blogimgs.naver.com/nblog/ico_scrap01.gif" class="i_scrap" width="50" height="15" alt="본문스크랩" /> Hibernate vs iBatis 논쟁 정리... from Struts mailin..

학생. 2007. 2. 13. 00:40
 [출처: okjsp]
제가 보고 있는 메일링 중에 가장 많은 글이 올라 오는 곳이 Struts 메일링 리스트입니다.
그런데 몇 일전부터 'Hibernate vs. iBatis vs. POJO'라는 글이 수 없이 올라 오더군요.. 잘 들 아시는 것처럼 토론하는 애덜 한 번 필이 꽂히면 주구장창 올라오지 않습니까.. 흐흐 그래서 일요일 저녁 먹고 딸래미 재우고 잠시 찬찬히 읽어 보면서 애덜이 뭐라하는지 잠시 정리해 봅니다 .

방아쇠를 당긴 Access Denied라는 친구는 ORM utility에 관심을 가지기 시작했고, 공부해 볼려고 하니 이미 JDO는 뒤로 제껴 놓고 Hibernate와 iBatis 두 utility의 첨예한 대립에 강팡질팡하는 것 같더군요.. 그래서 대세가 무엇인지에 대한 질문을 올렸었습니다.

바로 이어진 2개의 답글에서는 현재 Hibernate를 쓰고 있는데, iBatis 또한 좋다라던지, If you want ORM, use Hibernate. If you want SQL mapping, use iBatis. 이런 말을 하면서 모호한 현 상태 즉, 뚜렸한 의견을 남기지 않았습니다. 여기에 살짝쿵 Lindholm, Greg라는 사람은개인적으로 SQL 쿼리를 작성하고 싶지 않다고 하면서 Hibernate에 손을 들어 줍니다.그러면서 마케팅적인 메세지를 1개 남기지요.. Manning의 "Hibernate In Action"를 추천한다고요.. ㅋㅋ 저도 갠적으로 좋은 책이라고 생각하지만.. 살짝쿵 마게링적인 냄새가... 흐흐

이 정도로 의견이 올라올 때 쯤 우리의 Ted Husted가 한 말을 날립니다. Ted Husted는 저 갠적으로 최고의 Struts책이라고 생각하는 'Struts in Action'을 쓴 사람으로 Struts 메일링에서 결정적인 답변을 해 주는 사람입니다. ㅋㅋ 그런 Ted Husted가 낸 의견 또한 원론적입니다. 그 선택은 애플리케이션의 사이즈, 범위에 따라 다르며, 현행 데이타베이스, 개발자들의 선호도에 따라 다르므로, Hibernate와 iBatis로 해당 애플리케이션의 주요 부분을 코딩해 보고 결정하랍니다. 어는쪽에도 손을 들어 주지 않는 역시 세계 팬을 가진 고수의 말은 대단합니다. 흐흐

여기서 살짝쿵 방향이 바뀝니다. Rick Reumann라는 사람은기존 데이타베이스를 기준으로 생각하랍니다. 즉, 완전히 새롭게 DB를 구성한다면, Hibernate가 좋겠지만, 기존 데이타베이스를 버리지 않고 같이 가는 한 iBatis가 훨 좋다고 합니다.역시 여기 저기서 if가 걸려야 한다면 iBatis로 쿼리문을 짜야한다는 것입니다. 이에 Larry Meadors라는 사람이 한표를 줍니다. 저도 한표... 흐흐

이정도 얘기가 오고 가니 뚜렷하게 한 쪽으로 표를 던지는 사람이 나오기 시작했습니다.Nitish Kumar라는 사람은 지금까지 Hibernate 2.X를 써왔으며, 상당히 도움을 많이 받은 모양입니다. 그러나, 몇몇 경우에선 지독하리만치 일을 어렵게 만드는 것이 Hibernate라고 하면서 3.X에서 해결해 달라고 합니다.그리고 iBatis는 안 써봐서 아무 말도 못하겠다고 잘라 말합니다. 그러면서, Spring과 같이 쓰면 더 좋다고 Hibernate와 Spring의 궁합도 언급니다. 아.. 요즘 Hibernate와 Spring의 궁합에 금이 가는 기사가 여기 저기 올라오고 있습니다. 오래가지 않기를... 흐흐 Hibernate와 Spring에 푹 빠져있는 사람인 것 같습니다.

그러나, 위에 사람이 살짝쿵 논쟁거리를 남겨 놓습니다. I think I would still like to have the freedom of writing normal SQL queries while having the flexibility of using a mapping tool. I guess Hibernate does provide that kind of flexibility. 라고 얘기를 하자, 기다렸다는 듯이 Larry Meadors는 이 기능은 iBatis의 특징이라고 면박을 줍니다.. ㅋㅋ 이에 뒤질세라, Stéphane Zuckerman이라는 사람은 Larry Meadors가 잘못 이해를 한 것이며,Nitish Kumar가 한 말은 HQL (Hibernate Query Language)를 말한 것으로, 실제로 HQL을 Spring에서 사용하는 방법을 코드를 통해서 장문으로 대응합니다.그러면서 마지막에 말을 하나 남김니다. Hibernate는 중대규모 애플리케이션에 적합하다고 이야기 합니다. 이에 대한 매우 복잡한 애플리케이션에 Hibernate가 좋은지, iBatis가 좋은지 다시 묻는 질문에, 이제 나와야 할 논쟁거리가 나오게 됩니다.

Stéphane Zuckerman은 Spring에서 복잡한 것은 초기 세팅이라고 합니다. 잘 들 아시는 것처럼 테이블 하나에 여러개의 class 파일, XML configuration file, 또 전체적인 config 파일을 만들어야 합니다. 그러나, 이건 잠시일 뿐 그 다음부터는 상당히 편하게 Hibernate를 사용할 수 있다고 합니다.Hibernate를 공부해보신 분들은 잘 알겠지만, 설정 파일이 넘 많습니다. 복잡하고 서로 유기적으로 넘 잘 엮여있어서 한 쪽에서 삑사리나면 헤어 나오질 못합니다. 그러나, 아주 좋은 eclipse plug-in이 많이 나와 있어서 이런 수고를 상당히 많이 덜 수 있습니다. 다른 개발자 분들도 꼭 plug-in 쓰시고 Hibernate 포기하지 마세요.. 흐흐 이런 Hibernate 설정 파일의 복잡함을 eclipse plug-in으로 풀어야 한다고 DGraham@EvergreenInvestments.com가 이야기하며http://hibernatesynch.sourceforge.net/.도추천해 줍니다. 훗~ 이후로 여러 개의 글에서 plug-in을 소개하고 추천합니다.

이런 일련의 논쟁에 쐐기를 박는 글이 떴습니다. 처음 질문을 한 Access Denied의 글입니다. 그는 James Elliott's "Hibernate" (O'Reilly Developer Notebook Series 2004) 책을 구입했다고 합니다. 또 아마존에서 iBatis 관련 서적을 검색해 보았으나, "Pocket Guide to the Birds of Britain and North-West Europe" and "An Introduction To The Mystical Use of Classical Persian Poems."와 같은 책을 검색했다고 합니다.이런 시장의 상황을 보고 그는 현재는 Hibernate의 세상이고 단정짓습니다. 아울러 최근에 Hibernate를 요구하는 구인광고는 많이 보았으나, iBatis를 요구하는 것은 본적이 없다고 합니다. 그렇기 때문에 다시 한번 Hibernate가 점령하고 있다고 판단하더군요.

이와 비슷한 이야기가 있습니다. 현재 오픈소스진영 framework는 struts, webwork, spring, Tapestry 등등 많은 framework가 있습니다. 어떤 framework를 선택할 것인가? 라는 질문에 답을 하는 양 특정 framework를 요구하는 구인광고를 토대로 통계를 과거 2차례 냈으며, 전세계적으로 상당한 반향을 불러 일으켰고 framework 선택의 기준으로 많이 작용하기도 했습니다.

결국은 시장에서 요구하는 기술이 무엇이냐일 것입니다. 그 척도로는 구인시 개발자가 갖추어야 할 필수 기술이며 그런 기술을 갖추기 위한 관련 서적일지도 모릅니다. 하튼 당분간 이 논쟁은 지속되리라 생각합니다. 이에 개발자 여러분들의 의견 또한 메일링에 남겨 주세요… 흐흐.. 영어라서… 흐흐
 

     

 

 

 

==================================================================================================================== 

  • 개발자들은 자기만의 고집(?)을 어느정도 가지고 있기 때문에 이런식의 어쩌면 불필요하다고까지 판단할수 있는 논쟁거리가 잘 생기는거 같습니다. hibernate나 iBATIS는 분명 초기 의도가 다른 프레임워크입니다. 그 의도를 생각하자면 논쟁거리가 되지 않겠지만 ORM이라는 공통의 성질때문에 발생하는 논쟁인거 같습니다. 초기의도를 생각해서 메일링 리스트의 내용같은 다소 불필요한 논쟁거리가 국내엔 안 나오길 바랄뿐입니다.
  • 이동국
  • 2005-08-16 08:14:51
  • x
  • 사실 트랜색션을 공유할 수 있기 때문에 두가지를 함께 사용해도 무방합니다. 저는 두가지를 다 사용해 보았는데요. 둘다 좋습니다.

    제 생각에는 Hibernate 와 iBatis SqlMap 을 함께 사용하고, iBatis DAO 로 감싸 주면 좋을 듯 합니다.
  • 이희승
  • 2005-08-16 09:11:47
  • x
  • 음 아직 저 툴은 개발 작업에 적용하기는 어렵던데...
    여러명의 개발자들이 다 저 프레임웍을 알게 하는 일이 더 어렵던디... --;;;
    그래서 다수의 기업에서도 해당 프레임워크를 할 줄 아는 분을 뽑는 것이겠죠.
    그리고 이러한 추세에 맞게 구할수 있는 서적들도 인기 있는 것들만....
  • moonumi
  • 2005-08-16 09:16:40
  • x
  • 처음에 접하기는 아무래도 iBatis 가 편하긴 하더군요. 다이나믹 SQL 도 좋구..
    다만 페이징처리가 SQL 수준에서 되지 않는게 아쉽구요.. ( 나름대로 수정을 해서 쓰지만.. 제약사항이 많아서.. ) 반면에 Hibernate 는 SQL 수준으로 각각의 DB 마다 페이징을 해주니 좋지만 초기에 러닝 커브가 높다는게 흠... 둘다 어느쪽이 100% 우월하다고 하기는 어렵겠네요 ~
  • 노츠
  • 2005-08-16 09:45:13
  • x
  • 저는 iBatis가 좋습니다. 다들 개발자 취향이 아닐까요
    저희는 이클립스에 Struts, Spring, iBatis 를 적용하여 진행하는데
    개발자들이 3가지를 이해하는데 어렵어 하는군요 그래도 그냥 밀어 붙이고 있어요 ^^
  • naturaly
  • 2005-08-16 09:46:59
  • x
  • 논쟁 좋은데요..

    이런 건설적인 논쟁은 각 프로젝트들에게 활력을 주고 자신의 단점을 돌아보고 앞으로 나아갈 수 있는 토대를 마련해주는 것 같습니다.

    긴 논쟁이었을 텐데 번역해서 정리까지 넘 감사드립니다~
  • 권남
  • 2005-08-16 10:48:42
  • x
  • 재밌게 잘봤습니다. ^^;
    theclub님도 글을 무척 재미있게 잘 쓰시네요. ~
  • 이종희
  • 2005-08-16 13:20:24
  • x
  • 저도 편식은 안할려고 하는데, ibatis가 좀더 쉬운거 같기는 하고요, Hibernate도 괜찮은거 같은데, 아직 적용할만한 중대형 시스템을 처음부터 만들어 본적이 없어서, 패스중입니다..ㅋㅋㅋ..취향대로 프로젝트에 맞게 무리하지 않고 만드는게 좋을 듯합니다. 너무 무리해서 강요하는 것도 안 좋은거 같고~
    재밌는 글이네요. 논쟁은 아무리 하찮은 얘기라도 서로 다시 한번 생각할 수 있는 이야기를 한다는 것에서 좋다고 생각합니다. 너무 감정적이지 않은 선에서요..^^
  • ologist
  • 2005-08-16 15:34:47
  • x
  • iBatis 를 어떻게 읽어야 하나요? 아이베티스?

    Hibernate는 잠깐 예제만 따라 해보고 접고 현재는 대부분 DbUtils 로 다 해결하고 있습니다.

    ibatis 가 뭔지 학습해 봐야겠네요. 이것도 흔히 말하는 ORM 인거 같기도 하구요.

    근데 이러한 것들을 쓰는 이유가 아무레도 편하자는 차원에서 쓰는거 같은데요.

    어느 정도 규모의 프로젝트에서 도입해서 쓰면 될런지 감이 오질 않네요?
  • 네버다이
  • 2005-08-18 12:58:15
  • x
  • 세브니님 감사합니다. 글이 다 2003년도 글이네요. 2년후에서야 접하다니... ㅎㅎㅎ

    방금 화장실에서 ibatis.apache.org 에서 doc 여러개 다운받고

    9장짜리 iBATIS-SqlMaps-2-Tutorial.pdf 인쇄해서 화장실에서 잠깐보고 나왔습니다.

    우선 query가 XML 파일쪽으로 들어간 것을 살펴볼 수가 있었구요.

    그리고 나머지는 좀더 찾아보고 자판 두들겨 보고 해야겠네요. ^^

  • 네버다이
  • 2005-08-18 13:34:09
  • x
  • ㅠㅠ. 하두 게임하고 업무만 했더니 못따라가겠어요. 엉엉
  • kenu
  • 2005-08-18 13:47:35
  • x
  • 저두.. 금방 생각난건데..
    위의 게시물들 쓸때만 해도.. 이것저것 만져보던게 참 많았는데..
    딱 2년동안 아무것도 안만져본거 같습니다... 이 회사 들어오고 나서 -_-;;
    뭐 노력을 안한게 크겠고..
    kenu님 말대로.. 게임과 업무만 한듯 -_-;;
    그래도 kenu님은 책이라도 많이 읽으셨죠 ^^;;
  • 세브니
  • 2005-08-18 15:53:59
  • x
  • 동국님 링크감사합니다.

    deve.cafe는 struts질문할때 openframework 홈피는 Spring 이 뭔가해서 Reference 보러 자주 갔었는데 iBatis도 아래쪽에 숨어 있었네요.

    최근에 okjsp에 자주 오시는거 같아요. 방갑습니다. ^^a

  • 네버다이
  • 2005-08-18 20:06:47
  • x
반응형