** PreparedStatement
- ์ฟผ๋ฆฌ๋ฌธ์ ์๊ณ ์๋ ๊ฐ์ฒด.
- ์ฟผ๋ฆฌ๋ฌธ์ ๋ฏธ๋ฆฌ ์์ฑํ๊ณ , ๊ฐ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ bind๋ณ์(?)๋ก ์ฒ๋ฆฌํ์ฌ
์ฟผ๋ฆฌ๋ฌธ์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๋ ์ฟผ๋ฆฌ๋ฌธ ์์ฑ๊ฐ์ฒด.
- ์ฟผ๋ฆฌ๋ฌธ์ด ๋ฐ๋ณต ์คํ๋๋๋ผ๋ ํ๋ฒ๋ง ์์ฑํ์ฌ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต ์คํ๋๋
ํ๊ฒฝ์์ ํจ์จ์ด ์ข๋ค.
- SQLInjection ๊ณต๊ฒฉ์ ์์ ํ๋ค.
์์ ์์
1. ๋๋ผ์ด๋ฒ๋ก๋ฉ
2. ์ปค๋ฅ์ ์ป๊ธฐ
3. ์ฟผ๋ฆฌ๋ฌธ์์ฑ๊ฐ์ฒด ์ป๊ธฐ
String example=“insert into ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
,,) values(?,?,?,?)”;
PreparedStatement pstmt=con.prepareStatement( example );
4. ๋ฐ์ธ๋๋ณ์์ ๊ฐ ์ค์
-์ ์
pstmt.setInt( ์ธ๋ฑ์ค, ์ ์๊ฐ);
-์ค์
pstmt.setDouble(์ธ๋ฑ์ค, ์ค์๊ฐ);
-๋ฌธ์์ด
pstmt.setString( ์ธ๋ฑ์ค, ๋ฌธ์์ด ๊ฐ);
-๋ ์ง
pstmt.setDate( ์ธ๋ฑ์ค, java.sqlDate๊ฐ์ฒด);
5. ์ฟผ๋ฆฌ๋ฌธ ์ํ ํ ๊ฒฐ๊ณผ ์ป๊ธฐ ( ์ฃผ์ : ๋งค๊ฐ๋ณ์๋ฅผ ๋ฃ์ง ์๋๋ก => ์คํํ ๋ error )
// ์ฉ๋์ ๋ง์ถฐ ์ฌ์ฉ
pstmt.executeUpdate();// insert, update, delete
pstmt.executeQuery(); // select
6. ์ฐ๊ฒฐ ๋๊ธฐ
pstmt.close(); , con.close();
* bind๋ณ์ ( ? )
- ์ฟผ๋ฆฌ๋ฌธ๊ณผ ๊ฐ์ ๋ฌถ์ ๋ ์ฌ์ฉํ๋ ๋ณ์.
- ์ฟผ๋ฆฌ๋ฌธ์ ?๋ก ์ฌ์ฉํ๋ค.
- ๋ฐ์ธ๋ ๋ณ์๋ L -> R ์งํํ๋ฉฐ ์์๋๋ก 1๋ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ค.
- ์ปฌ๋ผ๋ช ,ํ ์ด๋ธ๋ช ์ ์ ๋๋ก ๋ฐ์ธ๋ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฐ์ธ๋๋ณ์์๋ ๋ฌธ์์ด ์ผ์ง๋ผ๋ ‘๋ฅผ ๋ถ์ด์ง ์๋๋ค.
String example=“insert into ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
,,) values(?,?,?,?)”;
** Singleton Pattern
- ์คํ์ค์ธ JVM์์ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋๊ณ , ํ๋์ ๊ฐ์ฒด๋ฅผ ์ ์งํ๋ฉฐ,
ํ๋์ ๊ฐ์ฒด๋ง ์ฌ์ฉํ๋๋ก ๋ง๋๋ Design Pattern.
- ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ์์ฑ๋์ด์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋
์๊ฐ์ด ์งง๋ค.( ๋น ๋ฅด๋ค )
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
- JVM์์ ๊ฐ์ฒด๊ฐ ์๋ฉธ๋ ์ดํ์๋ ์ฐธ์กฐํ ์ ์๋ค.( ํด๊ฒฐํ๋ ์ฝ๋ ์์ฑ)
์์ฑ๋ฒ)
1.ํด๋์ค์ธ๋ถ์์ ์ง์ ๊ฐ์ฒดํํ ์ ์๋๋ก ๋ง๋๋ค. ( ์์ฑ์์ ์ ๊ทผ ์ง์ ์๋ฅผ private)
public class Test{
private static Test t;
private Test(){
}
}
2. ๊ฐ์ฒด๋ฅผ ํ๋๋ก ์ ์งํ๊ณ , ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ์ผ.
public static Test getInstance(){
if( t == null ){ // ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด์์ง ์๋ค๋ฉด
t=new Test();
}
return t;
}