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 |
Tags
- 암호화
- Cookie
- HTML
- phaser
- JavaScript
- EC2
- 웹게임
- SQL
- 배포
- AWS
- model1
- 도커
- node.js
- Spring
- CSS
- express
- jQuery
- 비트코인
- Servlet
- 블록체인
- 알고리즘
- tiles.xml
- Ajax
- docker
- 웹소켓
- PL/SQL
- websocket
- JSP
- RDS
- autowired
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