Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Servlet
- autowired
- Ajax
- Spring
- Cookie
- 배포
- JSP
- PL/SQL
- model1
- node.js
- AWS
- websocket
- 비트코인
- 알고리즘
- 도커
- phaser
- 블록체인
- 웹소켓
- docker
- RDS
- 암호화
- tiles.xml
- CSS
- JavaScript
- HTML
- jQuery
- EC2
- SQL
- express
- 웹게임
Archives
- Today
- Total
記錄
Spring) selectKey 본문
멀티쓰래드 상황에서 시퀀스 값을 사용할 때 한 번 사용한 시퀀스 값을 그대로 다시 사용해야 할 경우 currval를 하게되면 값을 보장 받지 못한다. 그 사이에 누군가 nextval를 사용했을 수 있기 때문이다. 프로젝트를 하던 중 이것 때문에 좀 찾아보다가 selectKey 를 발견하게 되었다.
selectKey는 채번을 미리 해서 그 값을 객체에 저장할 수 있는 기능이다
<insert id="insertComment" parameterType="com.apollo.vo.CommentDTO">
<selectKey keyProperty="cmtid" resultType="int" order="BEFORE">
select seq_cmtid.nextval FROM DUAL
</selectKey>
insert into comments values(#{cmtid}, #{comments}, #{tid}, #{mid}, #{cmtkind}, sysdate)
</insert>
위 코드에서는 selectKey가 가장 먼저 작동하면서 미리 시퀀스 값을 채번하여 keyProperty에 해당하는 "cmtid"라는 변수명을 찾아 CommentDTO에 set 하게 된다. 그리고 그 값을 이용해서 아래 insert into ~ 문을 실행하게 된다.
이 과정 자체는 nextval를 쓴 것과 다를 바가 없다. 하지만 이 전체 insert문을 실행하고 나면 파라미터로 사용한 CommentDTO 객체의 cmtid값이 사용한 시퀀스 값으로 set 되어 있다는 것이 중요하다. 바로 이를 활용할 수 있기 때문이다.
'Web > Spring framework' 카테고리의 다른 글
Spring) 첫 프로젝트 결과물 (0) | 2018.07.26 |
---|---|
Spring) 마이바티스 부등호 (0) | 2018.07.23 |
Spring) poi 를 이용한 엑셀 추출 (0) | 2018.07.01 |
Spring) 웹소켓_2) 멀티채팅 (2) | 2018.05.13 |
Spring) 웹소켓_1) 기본 개념 (Echo를 예시로) (1) | 2018.05.13 |
Comments