가독성과 유지보수가 좋다.
PreparedStatement( ) 메소드를 통해 PreparedStatement 객체를 생성할 때 인자값으로 실행할 SQL문을 지정하는데, 값을 동적으로 지정해야할 때 ? 기호로 대체할 수 있다.
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
//Statement
Statement stmt = conn.createStatement();
stmt.executeUpdate("insert into test values('"+id+"', '"+pwd+"')");
//PreparedStatement
PreparedStatement pstmt = conn.prepareStatement("insert into test (id, pwd) values(?, ?)");
pstmt.setString(1, id);
pstmt.setString(2, pwd);
pstmt.executeUpdate();
쿼리 실행계획이 재사용된다.
DB서버가 쿼리를 처리하는 과정을 반복하지 않고 한번만 처리하여 퍼포먼스를 높이는 것을 의미
List<MemberBean> memberList = new ArrayList<MemberBean>();
MemberBean m1 = new MemberBean();
m1.setUserId("user1");
m1.setPasswd("123");
memberList.add(m1);
MemberBean m2 = new MemberBean();
m2.setUserId("user2");
m2.setPasswd("456");
memberList.add(m2);
MemberBean m3 = new MemberBean();
m3.setUserId("user3");
m3.setPasswd("789");
memberList.add(m3);
//PreparedStatement
PreparedStatement pstmt = conn.prepareStatement("insert into test (id, pwd) values(?, ?)");
int count = memberList.size();
MemberBean tMember;
for(int i=0;i<count;i++)
{
tMember = memberList.get(i);
pstmt.setString(1, tMember.getUserId());
pstmt.setString(2, tMember.getPasswd());
pstmt.executeUpdate();
}
그 외에도 SQL 인젝션 취약점을 보완할 수 있는 장점이 있다.
정리
- 가독성과 유지보수가 좋다.
- 쿼리 실행계획이 재사용된다.
- SQL 인젝션 취약점을 보완
'JSP' 카테고리의 다른 글
MVC (2) | 2023.03.14 |
---|---|
DataSource (0) | 2023.03.14 |
JDBC 프로그래밍 (0) | 2023.03.14 |
JSP - EL ( Expression Language ) (0) | 2023.03.14 |
JSP - 자바빈즈 (0) | 2023.03.14 |