prototype.js 관련 문서

Posted 2007. 9. 3. 11:51


오라클을 사용하여 프로그램할땐 Sequence의 nextVal을 이용하여 insert하고 해당 값으로 관련된 다른 테이블에 사용하곤 했었는데...
MySQL이나 MSSQL은 auto_increment, identity를 이용하여 디비 내부적으로 자동증가하여 그 부분을 어떻게 처리할까 고민하곤 했었다. 내부적으로 SCOPE_IDENTITY(), LAST_INSERT_ID() 함수를 이용하여 가져올수 있다는 것을 나중에서야 알았따.

이제 본론으로.... iBatis를 이용할때 이부분 더 좋게 지원해준다.
<selectKey>를 이용하면 프로그램쪽에서 한번더 select하는 번거로움을 덜어주고 성능면에서도 조금은 도움을 줄것으로 생각된다.

* 키값이 자동증가인 경우 ...
<insert id="insertId">
  insert into MEMBER (MBR_ID, NAME) values
    ( #mbrId#, #name# )
  <selectKey keyProperty="memberSeq" resultClass="int">
    SELECT  LAST_INSERT_ID()
  </selectKey>
</insert>
Integer result = sqlMap.insert("insertId", member);

이렇게 처리하면 result에 마지막으로 추가된 키값이 담기게 된다.

* 키값이 자동증가가 아닌경우...

<insert id="insertId">
  <selectKey keyProperty="memberSeq" resultClass="int">
    SELECT MAX(MBR_SEQ) + 1 FROM MEMBER
  </selectKey>
  insert into MEMBER (MBR_SEQ, MBR_ID, NAME) values
    ( #memberSeq#, #mbrId#, #name# )
  <selectKey keyProperty="memberSeq" resultClass="int">
    SELECT  LAST_INSERT_ID()
  </selectKey>
</insert>

이와 같이 처리하면 끝.


iBatis와 전통적인 ORM과의 차이점

Posted 2007. 8. 21. 17:41
iBatis 캐싱에 대한 내용을 보던중 알게된 내용이다.

일반적으로 ORM  하면 테이블과 객체의 1대1매핑을 주로 떠올리게 되는데 iBatis는 그렇지 않다는것이다.
그럼 뭐가 다른가?
iBatis는 데이터베이스의 테이블을 객체에 매핑하는것이 아니라 SQL구문을 객체에 매핑한다는 것이다.
즉 SQL의 실행결과에 중점을 주는 데이터 중심 ORM 이라는것이다.

그래서 객체를 선언하고 선언된 객체를 확장해서 사용할수도 있고... 그렇게 된다는것.

이제 iBatis를 바라보는 시각이 바뀌었으니 여러개의 테이블 조인에 대한 걱정이라든가(뭐 이미 방법을 알긴 했지만) 하는 그런것은 버려야겠군..


« PREV : 1 : ··· : 55 : 56 : 57 : 58 : 59 : 60 : 61 : NEXT »