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
- ERD 작성
- github
- 스프링부트오류
- 스프링 부트 공식 문서
- JPA주의사항
- spring서버
- jpa회원가입
- 빈생성안됨
- Filter
- git
- jwt메서드
- @IdClass
- uncheck Exception
- REST란
- 1차캐시
- Q 클래스
- json gson 차이
- 스프링 부트 기능
- json
- 최종 프로젝트
- 인텔리제이
- Spring Spring boot 차이
- Error creating bean with name
- JPA
- Unsatisfied dependency
- queryDSL
- 복합키
- JoinColumn
- REST API 규칙
- jpa에러
Archives
- Today
- Total
Everyday Dev System
MySQL last_insert_id 본문
last_iinsert_id는 서버에서 DB와 연결된 커넥션 단위로 select 합니다.
서버에서 DB와 연결을 할때 커넥션 풀에서 가져와 연결을 하고 그 연결마다 캐시를 다르게 저장하고 있습니다.
이때, insert 와 select 문의 요청이 각각 나눠져 있을 경우 문제가 발생합니다.
service 단에서
insertTable()를 호출한 후에,
selectLastId()를 호출할 경우
insert 할때 Auto increment 된 값을 select 해온다는 보장이 없습니다.
왜냐하면, insert 할때와 select 할때의 커넥션이 다를 경우가 있기 때문입니다.
<insert id="insertAndGetId" parameterType="YourObject">
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO your_table (
name,
description
) VALUES (
#{name},
#{description}
)
</insert>
위와 같이 XML에서 insert를 한 후에 select 할 수 있도록 xml 코드 변경이 필요합니다.
또한 selectkey 에서 order 값을 명시하지 않으면 default로 AFTER 값으로 인식하여 처리합니다.