๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/JDBC

(64)[oracle]6์ผ์ฐจ: โ–  PreparedStatement โ– 

by ์ข…์ด๋นจ๋Œ€ 2023. 11. 24.
TOP

๋ชฉ์ฐจ

    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 ๋ฅผ ์ฆ‰์‹œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.