๋ชฉ์ฐจ
1. 23.11.24(๊ธ)
โ โ โ PreparedStatement โ โ โ
/* **Statement์ ํ์๋ก PreparedStatement๊ฐ ๋ง๋ค์ด์ง.
์ค๋ฌด์์๋ Statement๋ ๋ณด์๋๋ฌธ์ ์ฌ์ฉํ์ง ์์!
๊ธํ๊ฒ ํ
์คํธ ํ ๋๋ง Statement ์ฌ์ฉํ๊ธฐ, ์ค๋ฌด์์ ์ฌ์ฉXX**
Statement PreparedStatement
- ์์
๊ฐ์ฒด โ โ - ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์ฑ
- ์ฟผ๋ฆฌ๋ฌธ ๊ตฌ์ฑ โ โ - ์์
๊ฐ์ฒด
- ์ฟผ๋ฆฌ๋ฌธ ์คํ - ์ฟผ๋ฆฌ๋ฌธ ์คํ
*/
1. Statement ์ execute ๋ฉ์๋๋
๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋ SQL ๊ตฌ๋ฌธ์ DBMS ๋ก ์ ๋ฌํ๋ ์ญํ ์ ์ํํ๋ฉฐ,
๋ด๋ถ์ ์ผ๋ก SQL ๊ตฌ๋ฌธ์ JDBC ๋๋ผ์ด๋ฒ๊ฐ ์ฝ์ ์ ์๋ ํ์์ผ๋ก
์ ์ฒ๋ฆฌ(precompile)ํ๊ฒ ๋๋ค.
// ์ ์ฒ๋ฆฌ(precompile): ์ฌ์ ์ ์ฒ๋ฆฌํด ์คํ๋ ์ ์๊ฒ ํ๋ ๊ฒ**
์ดํ ๋๋ผ์ด๋ฒ๋ DBMS ์ ์ ์ฒ๋ฆฌ๋ ์๊ตฌ์ฌํญ์ ์ ์กํ๊ฒ ๋๋๋ฐ,
SQL ๊ตฌ๋ฌธ์ ๋งค๋ฒ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ ์กํ๊ฒ ๋๊ธฐ ๋๋ฌธ์
๋ฐ๋ณต์ ์ธ ์์
์์ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ ํ๊ณ๋ฅผ ๊ฐ๊ณ ์๋ค.
์ด์ ๋ฐํ์ฌ, PreparedStatement ๋
์ ์ฒ๋ฆฌ ๋ Statement ๋ก ์ฃผ์ด์ง SLQ ๊ตฌ๋ฌธ์ ๋ฏธ๋ฆฌ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์น ์ํ๋ก
๋ณด๊ดํด ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต์ ์ธ ์์
์ ์ํํ๋ ๋ฐ ์์ด ๋งค์ฐ ์ ๋ฆฌํ๋ค.
Statement ์ ์๋ธ ํด๋์ค์ธ PreparedStatement ๋
Statement ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์๋ฐ์ผ๋ฉฐ
IN ๋งค๊ฐ๋ณ์์ ์์น์ ๋ฐ์ด๋ฒํ
์ด์ค๋ก ์ ์ก๋์ด์ง ๊ฐ์ ์ง์ ํ๊ธฐ ์ํด
ํ์ํ ์ ์ฒด ๋ชจ๋ ๋ฉ์๋์์ ์งํฉ์ ํฌํจ์ํจ๋ค.
๋ํ, ์ธ ๊ฐ์ ๋ฉ์๋ <excute(), excuteUpdate(), excuteQuery()>๋
์๋ฌด๋ฐ ํ๋ผ๋ฏธํฐ๋ ๊ฐ์ง์ง ์๋๋ค.
์ด๋ฌํ ๋ฉ์๋๋ค์ Statement ํํ(์ฆ, SQL ๋ฌธ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ ํํ)๋
PreparedStatement ๊ฐ์ฒด์์ ์ฌ์ฉ๋์ง ์๋๋ค.
2. IN ๋งค๊ฐ๋ณ์ ๋๊ฒจ์ฃผ๊ธฐ
PreparedStatement ๊ฐ์ฒด๋ฅผ ์คํํ๊ธฐ ์ ์
๊ฐ <?> ๋งค๊ฐ๋ณ์์ ๊ฐ์ด ์ค์ ๋์ด์ ธ ์์ด์ผ ํ๋ค.
์ด๊ฒ์ setXxx() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ด๋ฃจ์ด์ง๊ฒ ๋๋ฉฐ
Xxx ๋ ๋งค๊ฐ๋ณ์์ ๋ํ ์ ๋นํ ํ(Type)์ด๋ค.
setXxx() ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ค์ ๋ ๋งค๊ฐ๋ณ์์ ์๋ฒ์ด๊ณ ,
๋ ๋ฒ์งธ ์ธ์๋ ๋งค๊ฐ๋ณ์๊ฐ ์ค์ ๋ ๊ฐ์ด๋ค.
โป Connection ์ ๋ํ์ ๋ฉ์๋
- createStatement()
: SQL ๊ตฌ๋ฌธ์ Database ์ ์ ๋ฌํ๊ธฐ ์ํด Statement ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- preparedStatement(String sql)
: ํ๋ผ๋ฏธํฐ๊ฐ ํฌํจ๋ SQL ๋ฌธ์ Database ์ ์ ๋ฌํ๊ธฐ ์ํด
PreparedStatement ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- prepareCall(String sql)
: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Stroed Precedure๋ฅผ ํธ์ถํ๊ธฐ ์ํด
CallableStatement ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- close()
: ํ์ฌ์ Connection ๊ฐ์ฒด์ ํ ๋น๋ System Resource ๋ฅผ ์ฆ์ ๋ฐํํ๋ค.