Java 에서 저장 프로시저 사용하기

http://cafe.naver.com/toracle/67



CallableStatement는 PreparedStatement 를 상속받습니다.


CallableStatement와 PreparedStatement 는 바인드 변수를 사용해서 DB 퍼포먼스를 높일 수 있습니다.


여기서 바인드 변수 란


SQL은 먼저 parsing-->execute-->fetche 로 실행됩니다.


바인드 변수를 사용하지 않으면


select * from emp where ename='SCOTT';  이 문장과


select * from emp where ename='ALLEN';은 같은 문장이고 Condition Value 만 틀립니다.


하지만 DB는 같은 문장이라고 문장체크하고 스키마 체크, 테이블 유무 체크를 DataFile로 부터 체크 합니다.


하고 난 다음 exeute에서 실행계획등을 만듭니다.


여기서 바인드 변수 사용시 SharedPool에 똑같은 문장이 있고 변수 만 틀리다면 DB는 pasing 절차를 안 거치고


바로 execute-->fetche 합니다.

 

CallableStatement는 SQL의 스토어드프로시저(Stored Procedure)를 실행시키기 위해 사용되는 인터페이스입니다. 그럼 스토어드프로시저란 무엇일까요? 간단히 알아보면, 쿼리문을 하나의 파일 형태로 만들거나 데이터베이스에 저장해 놓고 함수처럼 호출해서 사용하는 것입니다. 이것을 이용하면 연속되는 쿼리문에 대해서 매우 빠른 성능을 보이며, 여기서는 다루지 않지만 보안 문제의 해결 등 상당한 이점이 있습니다.

 

그럼 우리가 프로그래밍할 때 또 무슨 이익이 있을까요? 위와 같은 실행능력 향상 외에 자바코드에 쿼리문이 들어 가지 않으므로 자바 코드가 간결해지고 SQL에 독립적이 된다는 것입니다. 결코 그냥 지나칠 수 없는 부분이겠죠?.

 

CallableStatement의 특징

n         데이터베이스의 스토어드프로시저를 실행시킬 때 사용

n         속도, 코드의 독립성, 보안성에 상당한 잇점이 있음

 

스토어드프로시저로 값을 받아오려면, 호출하기에 앞서 반드시 CallableStatement 인터페이스의 registerOutParameter 메서드를 호출해야 합니다. 이 인터페이스는 PreparedStatement 인터페이스로부터 상속 받았기 때문에 setXxx 메서드를 사용할 수 있습니다.

 

 

예제 입니다

 

<%@page contentType="text/html;charset=euc-kr" import="java.sql.*"%> 
<html>
<body> 
<h3>CallableStatement 테스트 </h3>
<hr>
<% 
    Class.forName("드라이버명"); 
    Connection conn = DriverManager.getConnection
("URL"); 
    CallableStatement cs = conn.prepareCall("{call myStoredProcedure(?,?,?)}"); 
    cs.setInt(1,3); 
    cs.registerOutParameter(2, java.sql.Types.VARCHAR); 
    cs.registerOutParameter(3, java.sql.Types.INTEGER); 
    cs.execute(); 
%>
<table border = "1" cellspacing="0" cellpadding="1"> 
  <tr bgcolor = "pink"> 
    <td><b>name</b></td> 
    <td><b>age</b></td> 
  </tr> 
  <tr> 
    <td><%=cs.getString(2)%></td> 
    <td><%=cs.getInt(3)%></td> 
   </tr> 
<% 
    cs.close(); 
    conn.close(); 
%> 
</table> 
</body>
</html>

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받고 있습니다.

이 포스팅은 제휴마케팅이 적용되어 작성자에게 일정액의 커미션이 제공될수 있습니다.

이 글을 공유하기

댓글

Designed by JB FACTORY

"웨딩박람회 일정 스드메 견적 웨딩플랜닷컴 "

주부알바 재택부업 앙팡펫파트너스

서민안심전환대출 ㅣ정부지원대출ㅣ채무통합대환대출