달력

112018  이전 다음

  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
ibatis 3.0 릴리즈 소식이 궁금해서 홈페이지를 접속했더니 많이 바꼈네요.



시커먼 배경색상입니다. 그럼. 이젠 3.0 베타 릴리즈 하는거..??

'자바' 카테고리의 다른 글

[문서] Infinitest 사용하기  (2) 2009.08.10
[ibatis] ibatis 3.0 beta1 릴리즈  (5) 2009.08.09
[ibatis] 홈페이지개편.??  (2) 2009.07.23
[Spring] SpringSource Tool Suite  (0) 2009.05.08
[CI툴] hudson  (0) 2009.04.05
[JSON] Jackson JSON Processor  (0) 2009.03.01
Posted by 이동국

댓글을 달아 주세요

  1. 권남  댓글주소 수정/삭제 댓글쓰기 2009.07.24 17:44 신고

    전 이미 iBATIS를 안쓴지 2년. --;
    Hibernate로~~ ^^

ibatis 개발자 가이드는 ibatis 홈페이지에서도 한글 문서를 배포하고 있지만 수정시 매번 메일로 전달해야 되서 사실상 kldp.net 에서 배포하고 있습니다.
배포 페이지는 다음 링크를 참고하시면 됩니다.

http://kldp.net/frs/?group_id=827&release_id=2208

오늘 일부 내용을 수정했습니다.
내용이 추가되거나 큰 수정이 있었던 것은 아니고 어제 명신님이라는 분으로 부터 피드백 메일이 와서 해당 내용을 반영한 것입니다. 음 이렇게 성함을 밝혀도 되는지 모르겠네요. ^^

수정내용은 8페이지의 maxRequests 에 대한 내용입니다.

1. 원문
Different DBMS have different limits, but no database is without these limits. This should usually be at least 10 times maxTransactions (see below) and should always be greater than both maxSessions and maxTransactions.
 
2. 번역본
다른 DBMS는 다른 제한을 가진다. 이것은 최소한 10개의 maxTransactions이고 언제나 maxSessions과 maxTransactions보다 크다.
 
3. 고친 번역
다른 DBMS는 다른 제한을 가지지만, 이러한 제한이 없는 데이터베이스는 없다. 이러한 제한은 보통 최소한 maxTransaction의 10배이며(아래를 보라) 항상 maxSessions와 maxTransactions보다는 크다.

변명이지만 이 문서 번역은 거의 3년전인가 했던 내용이기도 하고 그 당시에는 번역하는데 미쳐 번역품질에 대해서는 그다지 고민을 못해서 오히려 없는게 나을것 같다고 불평하시는 분이 있을까 고민입니다.
너그럽게 봐주시길 바랍니다. ^^

'자바' 카테고리의 다른 글

[JSON] Jackson JSON Processor  (0) 2009.03.01
[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
[ibatis] 메일링리스트를 통해서 본 3.0 소식  (2) 2009.02.15
[자바] 인코딩  (1) 2009.01.30
[eclipse] 2008년 정리  (1) 2009.01.16
Posted by 이동국

댓글을 달아 주세요

원래 작년에 베타버전이 릴리즈되어야 할 터였는데.. 아직도 그다지 소식이 없습니다.
간혹 메일링리스트를 통해 한번씩 언급이 되기는 하지만 이 역시 .. 극히 적죠..
메일링리스트를 볼때.. 몇가지는 알수 있을듯 합니다.

▣ iBATIS 2.0
1. 계획했던 모든 기능이 완성되어 있어 더이상의 기능추가는 없다. 단 유지보수및 버그수정을 한 버전은 마이너로 릴리즈될수 있다.


▣ iBATIS 3.0
1. http://opensource.atlassian.com/confluence/oss/display/IBATIS/iBATIS+3.0+Whiteboard 를 통해 3.0에서 구현할 많은 아이디어를 받았는데, 현재 이 화이트보드 페이지는 너무 복잡해서 더이상 보지(?)않는다고 합니다. 하지만 3.0을 구현하기 위한 많은 아이디어는 충분히 모았다고 생각한다네요.
2. 조만간 베타버전을 릴리즈 할 예정이며 소스는 http://svn.apache.org/repos/asf/ibatis/trunk/java/ibatis-3/ 에서 받을수 있습니다.
3. 코어는 이미 완성되어는데, XML은 새로운 형태로 구현되었고 좀더 자세한 정보를 가진다고 합니다.
그외 매핑, 자동매핑, 조인매핑, 캐싱, 트랜잭션 관리, 배치처리, 자동커밋과 그외 최근에 도입된 많은 기술들이 구현되었습니다.
4. 구현이 남아 있는 부분은 다음과 같습니다.
* 인터페이스 바인딩
* 애노테이션으로 설정하기
* 새로운 동적 SQL

이 정도네요..

▣ 메서드명
기존에 2.0 버전은 com.ibatis.sqlmap.client.SqlMapClient 인터페이스의 delete, executeBatch, executeBatchDetailed, insert, queryForList, queryForMap, queryForObject,  queryForPaginatedList, queryWithRowHandler, startBatch, update 가 제공되었습니다만.
3.0에는 org.apache.ibatis.api.SqlSession 인터페이스가 메서드를 제공합니다.


▣ MapperConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration
    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-config-3.dtd">

<configuration>

  <properties resource="org/apache/ibatis/parser/mapper.properties">
    <property name="driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
  </properties>

  <settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="multipleResultSetsEnabled" value="true"/>
    <setting name="useColumnLabel" value="true"/>
    <setting name="enhancementEnabled" value="false"/>
    <setting name="generatedKeysEnabled" value="false"/>
    <setting name="defaultExecutorType" value="SIMPLE"/>
    <setting name="defaultStatementTimeout" value="25000"/>
  </settings>

  <typeAliases>
    <typeAlias alias="Author" type="domain.blog.Author"/>
  </typeAliases>

  <typeHandlers>
    <typeHandler javaType="String" jdbcType="VARCHAR" handler="org.apache.ibatis.parser.ExampleTypeHandler"/>
  </typeHandlers>

  <objectFactory type="org.apache.ibatis.parser.ExampleObjectFactory">
    <property name="objectFactoryProperty" value="100"/>
  </objectFactory>

  <plugins>
    <plugin interceptor="org.apache.ibatis.parser.ExamplePlugin">
      <property name="pluginProperty" value="100"/>
    </plugin>
  </plugins>

  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <!-- mapperXML vs. mapperClass-->
    <mapper resource="org/apache/ibatis/parser/AuthorMapper.xml"/>
  </mappers>
</configuration>

▣ 다양한 ResultMap 설정
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper
    PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-mapper-3.dtd">

<mapper namespace="com.domain.BlogMapper">

  <resultMap id="blogWithPosts" type="Blog">
    <id property="id" column="id"/>
    <result property="title" column="title"/>
    <association property="author" column="author_id" select="com.domain.AuthorMapper.selectAuthorWithInlineParams"/>
    <collection property="posts" column="id" select="selectPostsForBlog"/>
  </resultMap>

  <resultMap id="joinedPost" type="domain.blog.Post">
    <id property="id" column="post_id"/>
    <result property="subject" column="post_subject"/>
    <association property="author" column="post_author_id" resultMap="joinedAuthor"/>
    <collection property="comments" column="post_id" resultMap="joinedComment"/>
    <collection property="tags" column="post_id" resultMap="joinedTag"/>
    <discriminator javaType="int" column="draft">
      <case value="1" resultMap="draftPost"/>
    </discriminator>
  </resultMap>

  <resultMap id="selectImmutableAuthor" type="domain.blog.ImmutableAuthor">
    <constructor>
      <id column="id" property="id"/>
      <result property="username" column="username"/>
      <result property="password" column="password"/>
      <result property="email" column="email"/>
      <result property="bio" column="bio"/>
      <result property="favouriteSection" column="favourite_section"/>
    </constructor>
  </resultMap>

</mapper>

관련 소식은 http://www.mail-archive.com/user-java@ibatis.apache.org/msg13225.html 에서 다시 확인하실수 있습니다.

'자바' 카테고리의 다른 글

[jersey] 1.0.2 릴리즈  (0) 2009.03.01
[ibatis] 개발자 가이드 업데이트  (0) 2009.02.28
[ibatis] 메일링리스트를 통해서 본 3.0 소식  (2) 2009.02.15
[자바] 인코딩  (1) 2009.01.30
[eclipse] 2008년 정리  (1) 2009.01.16
[groovy] HTTPBuilder module 사용하기  (0) 2009.01.11
Posted by 이동국

댓글을 달아 주세요

  1. 서영아빠  댓글주소 수정/삭제 댓글쓰기 2009.02.16 09:12 신고

    메소드명이 맘에 드네요. selectOne, selectList.

7월 경에 베타 릴리즈를 예상했던 것과는 달리 iBATIS 의 3.0 버전에 대한 소식이 굉장히 뜹합니다.
물론 svn 커밋 내역을 보면 최근에 3.0에 관련된 사항이 한창 진행중인 것을 알수 있지만 svn자체에 대한 접근권한이 일부에게만 주어져 있어.. 언제쯤.. 나올까 하는. 굼금증이 생겨나고 있는 상태입니다.

오늘 무심코 JIRA페이지에 접속했더니 3.0에 관련된 사항이 등록되어 있네요..

조만간. beta버전이 등록되겠죠..?? ㅎㅎ

Posted by 이동국

댓글을 달아 주세요

  1. yulisys  댓글주소 수정/삭제 댓글쓰기 2008.11.03 01:55 신고

    저 10월 31일이라는 날짜는 등록한 날짜인거겠죠? ㅎㅎ
    3.0 이 실제 어떻게 변하게 될지 기대가 되는군요

    • 이동국  댓글주소 수정/삭제 2008.11.03 09:42 신고

      메일링 리스트를 뒤져봐도.. 3.0에 대한 소식은 사실 없습니다.
      이전에 누가 JIRA에 3.0에 관련된 카테고리(?)를 등록해야 하지 않느냐고.. 언급한 적이 있었는데..
      정확하게 beta버전 릴리즈에 임박해서.. 등록되었을 수도 있구요. 아직은 이르지만 일단 등록부터 해놓은 것일수도 있습니다.
      아무튼 사용자가 적지 않은 프레임워크라.. 기대가 되긴 합니다.


오늘 대전에서 IT개발자 컨퍼런스가 있었습니다. struts2의 현철주 이사님과 Hibernate의 최범균님과 함께 3번째 세션의 iBATIS를 발표했습니다.
주요 내용은 iBATIS에 대한 소개와 3.0개발에 적용되는 컨셉 소개, 그리고 이슈관리 시스템에 등록된 이슈중 흥미로운 사항들에 대해 살펴보는 시간을 가졌습니다.
사내가 아닌 이 정도 규모의 발표는 처음이라 많이 해매긴 했지만 나름 좋은 경험이 되었고 인생에 또다른 이야기 거리를 하나 만든것 같습니다.


Posted by 이동국

댓글을 달아 주세요

  1. Max  댓글주소 수정/삭제 댓글쓰기 2008.09.30 10:19 신고

    수고 많으셨고,
    PPT 공유 감사합니다. ^^*

자바 개발자들의 프레임워크 사용이 어느 정도 보편화되면서 관련 커뮤니티에서 어떤 프레임워크를 사용해야 하느냐..? 라는 식의 질문은 상당수 줄어들었습니다.
얼마전 javaworld에 올라온 글이 하나 있군요.
http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html

Hibernate, iBATIS 그리고 JPA에 관련된 글입니다. 특별한 글이 아니기 때문에 여유가 되시는 분은 보셔도 좋을듯 합니다. 글에서 말하는 결론은 다음과 같다고 할수 있습니다.

특징
iBATIS Hibernate JPA
간단함
가장 좋음
좋음 좋음
완벽한 객체 관계 매핑 평균 가장 좋음 가장 좋음
데이터 모델 변경시 융통성 좋음 평균 평균
복잡성
가장 좋음 평균 평균
SQL에 대한 의존성 좋음 평균 평균
성능 가장 좋음 가장 좋음 N/A *
다른 관계 데이터베이스에 대한 이식성 평균 가장 좋음 N/A *
자바가 아닌 다른 플랫폼에 대한 이식성 가장 좋음 좋음 지원하지 않음
커뮤니티 지원과 문서화 평균 좋음 좋음


Posted by 이동국

댓글을 달아 주세요

  1. 김성안  댓글주소 수정/삭제 댓글쓰기 2008.08.04 00:40 신고

    hibernate만 써봤는데 다음번 취미활동은 iBatis로 만들어봐야 겠네요. :) 아 이클립스 티셔츠 받으셨나요? ㅎ

  2. 김성안  댓글주소 수정/삭제 댓글쓰기 2008.08.05 14:46 신고

    Ganymede Around the World (http://www.eclipse.org/ganymede/map.php )에 등록하신거 봐서 여쭤봤는데 소식 못들으셨나보네요. 전 이클립스 티셔츠 보내줄테니 주소 보내달라는 연락을 받아서요...

  3. 노력하자  댓글주소 수정/삭제 댓글쓰기 2009.01.07 10:04 신고

    좋은 자료 담아갑니다 ^_^

[이전 블로그 백업글][2006.4.5]
음. iBATIS에 관해 자주(?) 다루고 있지만은.. 유래에 대해서.. 알려진 바는 많지 않아.. 그동안 모르고 있었습니다. 웹 서핑중에 유래에 관련된 부분이 있군요..

Clinton Begin이라는 사람에 의해 2001년에 시작된 프로젝트.
원래는 암호 관련 소프트웨어 개발에 초점을 맞춘 프로젝트였다. iBATIS에 의한 첫 산출물은 Secrets라는 이름의 툴이다.

그러다가 2002년 초반에 마이크로소프트가 .NET이 J2EE에 비해 10배 빠르고 4배 생산성이 좋다는 논문을 발표했는데, 이에 iBATIS 팀은 (역자주: 열받아서..) 같은해 7월 1일 JPetStore 1.0을 릴리스했다. 그럼으로해서 자바가 .NET보다 생산성뿐 아니라 아키텍처면에서도 이점이 있음을 보여줬다.

그런데, JPetStore가 아주 재밌는 persistene layer를 사용했는데, 이것이 오픈소스 진영의 관심을 끈 것이다. 그후 관련된 질문과 요구가 Data Mapper(SQL Maps)와 DAO라는 두개의 프레임워크로 구성된 새로운 관점에 집중한 iBATIS 프로젝트의 전이를 가져온 것이다.

ibatis는 원래 암호 관련 프로젝트로 시작되었음을 알려주는 이름이다. 즉 “internet”과 “abatis”의 합성어인데,, abatis는 적의 공격을 방어하기 위한 장애물이라는 뜻이니,,, 인터넷를 지키는데 쓰는 암호를 의미하는 것이다.

http://pxforever.egloos.com/1022231 에서 가져왔습니다.
음 iBATIS 단어의 유래가 저렇다면. 정식 발음은 “아이버티스” 내지 “아이배티스”가 되어야 겠네요..
Posted by 이동국

댓글을 달아 주세요

  1. 노력하자  댓글주소 수정/삭제 댓글쓰기 2009.01.07 10:03 신고

    재미있는 글 담아갑니다 ^_^

[이전 블로그 백업글][2006.4.4]

iBATIS의 remapResults페이지

remapResults=”true”의 적절한 사용법
remapResults 속성은 <statement>, <select>, 그리고 <procedure> 에서 사용가능하다. 이것은 선택적인 속성이고 디폴트 값은 false이다.

remapResults속성은 쿼리가 칼럼을 동적으로 반환할때 true로 셋팅되어야만 한다. 예를 들면, 다음의 쿼리를 보자.

이 예제에서, 비록 테이블은 언제나 같지만 칼럼명의 목록은 동적이다.


이 예제에서, 테이블은 다를수 있다. SELECT내 * 의 사용으로, 결과 칼럼이 다를수 있기 때문이다.

결과 세트(result set) 메타데이터가 평범하지 않은것을 알아보기 위한 오버헤드로 인해, iBATIS는 마지막에 쿼리가 수행되는것이 무엇인지 기억할것이다. 이것은 위 예제와 유사한 상황내 문제를 생성할것이다.

remapResults사용에 의존한 첫번째 예제를 보자.

remapResults를 사용하지 않거나 remapResults=”false”로 셋팅하기

$fieldList$ 를 “fld1, fld2″ 로 셋팅하고 첫번째 쿼리를 수행하면. 다음과 같을것이다.

iBATIS는 fld1 와 fld2가 쿼리의 다음 수행시마다 결과세트가 될것이라고 가정하는 효과를 낼것이다. 애플리케이션이 $fieldList$를 “fld3, fld4″와 같은것으로 변경된다면 문제가 될것이다. iBATIS는 결과세트에서 fld1 와 fld2를 찾을수 없을뿐아니라, 부적절한 결과를 반환할것이다. iBATIS는 첫번째 수행에서 쿼리내 존재하지 않았기 때문에 fld3 와 fld4를 알지못한다.

remapResults=”true”로 셋팅하기

iBATIS는 쿼리가 수행되는 매번 결과세트 메타데이터를 검사하고 언제나 적절한 결과를 반환할것이다. 이 기능은 몇가지의 성능상의 자원을 소모한다. 그래서 결과세트가 동적일 때와 같은 필요한 경우에만 사용하는게 좋다.
Posted by 이동국

댓글을 달아 주세요

  1. 해피강유  댓글주소 수정/삭제 댓글쓰기 2008.07.03 23:28 신고

    remapResults옵션이 resultClass와 같이 사용할때만 작동하는것 같습니다. resultMap과 사용하면 옵셕 적용이 안되던데요.. 혹시 알수있나요?