데이터베이스에 대해 SQL을 실행하는 어노테이션이 있는 메소드의 구문

어노테이션이 있는 메소드의 선언 구문에 대해서는 이 다이어그램을 참조하십시오.

구문 다이어그램 및 구문 요소 설명은 다음 섹션에 있습니다.

구문 다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.

DDL문과 커서가 없는 SQL DML문을 실행하기 위한 구문

커서를 사용하지 않는 DML문을 실행하는 어노테이션이 있는 메소드를 선언하려면 이 구문을 사용하십시오. DDL문을 실행하는 경우에도 이 구문을 사용할 수 있습니다.

구문 도표 읽기시각적 구문 도표 생략
>>-@Update--(--sql--=--"--SQL-statement--"--)------------------->

>--+------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name--------------------------------------+--)-'   
                  +-resultHandler--=--class-name--+------------------------------------+-+        
                  |                               '-,--parameterHandler--=--class-name-' |        
                  '-rowHandler--=--class-name--+------------------------------------+----'        
                                               '-,--parameterHandler--=--class-name-'             

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

예제

다음은 SELECT문을 실행하는 메소드에 대한 구문 예입니다.

@Select(sql = "SELECT PID, QUANTITY, LOCATION FROM HEATHR.INVENTORY WHERE PID = ?")
Inventory getInventory(String pid);

다음은 INSERT문을 실행하는 메소드에 대한 구문 예입니다.

@Update(sql = "INSERT INTO HEATHR.INVENTORY (PID, QUANTITY, LOCATION) VALUES (?, ?, ?)")
int createInventory(String pid, int quantity, String location);

CALL문 실행 구문

CALL문을 실행하는 어노테이션이 있는 메소드를 선언하려면 이 구문을 사용하십시오.

구문 도표 읽기시각적 구문 도표 생략
>>-@Call--(--sql--=--"--SQL-statement--"--)--------------------->

>--+------------------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-callHandlerWithParameters--=--class-name--+------------------------------------+-+--)-'   
                  |                                           '-,--parameterHandler--=--class-name-' |        
                  '-parameterHandler--=--class-name--------------------------------------------------'        

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

예제

@Call(sql = "Call MYSCHEMA.BONUS_INCREASE( :p_bonusfactor, :p_bonusmaxsumfordept, 
	  :p_deptswithoutnewbonuses, :p_countdeptsviewed, :p_countdeptsbonuschanged, 
	  :p_errormsg )")
StoredProcedureResult callBONUS_INCREASE(Bonus_increaseParam parms);

SELECT문 실행 구문

SELECT문을 실행하는 어노테이션이 있는 메소드를 선언하려면 이 구문을 사용하십시오. @Cursor 어노테이션을 사용하는 경우 인터페이스에서 java.sql.ResultSet를 임포트해야 합니다.

구문 도표 읽기시각적 구문 도표 생략
>>-@Select--(--sql--=--"--SQL-statement--"--)------------------->

>--+-----------------------------------------------------------------------------------------+-->
   |                 .-,-------------------------------------------------------------------. |   
   |            (1)  V                                .-false-.                            | |   
   '-@Cursor--(--------+-allowStaticRowsetCursors--=--+-true--+--------------------------+-+-'   
                       |                 .-java.sql.ResultSet.CONCUR_READ_ONLY-.         |       
                       +-concurrency--=--+-java.sql.ResultSet.CONCUR_UPDATABLE-+---------+       
                       |                 .-java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT--. |       
                       +-holdability--=--+-java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT-+-+       
                       |          .-java.sql.ResultSet.TYPE_FORWARD_ONLY-------.         |       
                       '-type--=--+-java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE-+---------'       
                                  '-java.sql.ResultSet.TYPE_SCROLL_SENSITIVE---'                 

>--+------------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name--------------------------------------+--)-'   
                  +-resultHandler--=--class-name--+------------------------------------+-+        
                  |                               '-,--parameterHandler--=--class-name-' |        
                  '-rowHandler--=--class-name--+------------------------------------+----'        
                                               '-,--parameterHandler--=--class-name-'             

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

주:
  1. @Cursor 어노테이션 내에서 한 번만 옵션을 사용할 수 있습니다.

예제

@Select (sql="select PUBLISHER_ID, BOOK_NAME, BOOK_ID, COUNTY 
	  from BOOKS WHERE STATE='CALIFORNIA'")
@Cursor (concurrency = ResultSet.CONCUR_READ_ONLY, 
	  type=ResultSet.TYPE_FORWARD_ONLY, 
	  holdability=ResultSet.HOLD_CURSORS_OVER_COMMIT)
Iterator<Books> getBooksInCaliforniaAndNameCursor ();

위치 지정된 갱신 및 삭제 사항에 대한 구문

위치 지정된 갱신 및 삭제 사항을 수행하기 위한 어노테이션이 있는 메소드를 선언할 때 이 구문을 사용하십시오. @Cursor 어노테이션을 사용하는 경우 인터페이스에서 java.sql.ResultSet를 임포트해야 합니다.

위치 지정된 갱신 및 삭제 사항의 어노테이션이 있는 메소드를 작성하는 방법에 대한 정보는 위치 지정된 갱신 및 삭제 사항 수행을 참조하십시오.

위치 지정된 갱신 및 삭제에 대한 커서를 열고 이름을 지정하는 SELECT문을 실행하는 메소드의 구문.

구문 도표 읽기시각적 구문 도표 생략
>>-@Select--(--sql--=--"--SQL-statement--"--)------------------->

>--+------------------------------------------------------------------------------------------------------------------------------+-->
   |                                               .-,-----------------------------------------------------------------------.    |   
   |                                               V  (1)                  .-java.sql.ResultSet.CONCUR_READ_ONLY-.           |    |   
   '-@Cursor--(--cursorName--=--"--cursor-name--"--------+-concurrency--=--+-java.sql.ResultSet.CONCUR_UPDATABLE-+---------+-+--)-'   
                                                         |                 .-java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT--. |          
                                                         +-holdability--=--+-java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT-+-+          
                                                         |          .-java.sql.ResultSet.TYPE_FORWARD_ONLY-------.         |          
                                                         '-type--=--+-java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE-+---------'          
                                                                    '-java.sql.ResultSet.TYPE_SCROLL_SENSITIVE---'                    

>--+---------------------------------------------------------------------------------------+-->
   '-@Handler--(--+-parameterHandler--=--class-name-----------------------------------+--)-'   
                  '-rowHandler--=--class-name--+------------------------------------+-'        
                                               '-,--parameterHandler--=--class-name-'          

>--modifiers--+-Iterator-----------+--method-name--(--+-----------------------+--+------------------------------------+--);-><
              '-java.sql.ResultSet-'                  '-handler--handler-name-'  | .-,------------------------------. |       
                                                                                 | V                                | |       
                                                                                 '---parameter-type--parameter-name-+-'       

주:
  1. @Cursor 어노테이션 내에서 한 번만 이 옵션을 사용할 수 있습니다.

이름 지정된 커서를 사용하는 UPDATE 또는 DELETE문을 실행하는 메소드의 구문

구문 도표 읽기시각적 구문 도표 생략
>>-@Update--(--sql--=--"--SQL-statement--"--,--positionedCursorName--=--"--cursor-name--"--)-->

>--+-------------------------------------------------+---------->
   '-@Handler--(--parameterHandler--=--class-name--)-'   

>--modifiers--return-type--method-name--(--+-----------------------+--+------------------------------------+--);-><
                                           '-handler--handler-name-'  | .-,------------------------------. |       
                                                                      | V                                | |       
                                                                      '---parameter-type--parameter-name-+-'       

예제

다음은 위치 지정된 갱신 및 삭제 사항에 대한 커서를 여는 SELECT문을 실행하는 메소드에 대한 구문 예입니다.

@Select (sql="select PUBLISHER_ID, BOOK_NAME, BOOK_ID, COUNTY 
	  from BOOKS WHERE STATE='CALIFORNIA' FOR UPDATE OF PUBLISHER_ID")
@Cursor (concurrency = ResultSet.CONCUR_UPDATABLE, 
	  type=ResultSet.TYPE_FORWARD_ONLY, 
	  holdability=ResultSet.HOLD_CURSORS_OVER_COMMIT,
	  cursorName="TESTCURSORITER")
Iterator<Books> getBooksInCaliforniaAndNameCursor ();

다음은 커서를 사용하는 UPDATE문을 실행하는 메소드에 대한 구문 예입니다.

@Update (sql="update BOOKS SET PUBLISHER_ID = :publisher_id", 
	  positionedCursorName = "TESTCURSORITER")
int updateBooksByUsingNamedCursor (Book b);
주의: UPDATE 또는 DELETE문에 WHERE절을 포함하지 마십시오. WHERE절을 포함하면 사용자가 이 유틸리티를 실행하기 전에 로깅 옵션을 구성하는 경우 인터페이스의 구현을 작성할 때 pureQuery가 오류를 로깅합니다. pureQuery는 WHERE CURRENT OF절을 명령문에 추가합니다.

구문 요소 설명

@Call
메소드가 SQL CALL문을 실행하도록 지정합니다.
sql
실행할 메소드의 CALL문을 지정합니다.
@Cursor
SELECT문에 대한 커서 속성을 지정합니다. @Select 어노테이션도 사용하는 경우에만 이 어노테이션을 사용할 수 있습니다.
allowStaticRowsetCursors
z/OS®용 DB2 Universal Database 버전 8(새 기능 모드)이나 z/OS용 DB2 버전 9.1 데이터 소스 및 IBM® Data Server Driver for JDBC and SQLJ를 사용하여 해당 데이터 소스에 연결하는 경우, 명령문이 정적으로 실행될 때 SELECT문과 연관된 커서가 행 세트 커서인지 여부를 지정합니다.
false
명령문이 정적으로 실행될 때 SELECT문과 연관되는 커서가 행 세트 커서가 아님을 지정합니다.
이는 디폴트값입니다.
true
명령문이 정적으로 실행될 때 SELECT문과 연관되는 커서가 행 세트 커서임을 지정합니다. 값을 true로 설정할 때, 다음 제한사항에 주의해야 합니다.
  • 행 세트 커서를 사용할 수 있도록 허용하려는 SQL문은 메소드의 @Select 어노테이션에서 제공하는 SELECT문입니다.
  • 어노테이션이 있는 메소드의 리턴 유형은 pureQuery가 데이터베이스에서 하나의 행만 선택하도록 지시하지 않습니다.
  • 쿼리 결과의 어떤 컬럼도 LOB 또는 XML 데이터 유형이 아닙니다.
  • 명령문이 열리는 커서는 읽기 전용입니다. 정적 갱신 가능 커서가 행 세트를 사용하는 경우, 결과는 예상할 수 없습니다.

    pureQuery는 다음 조건 중 하나가 적용되는 경우 명령문을 갱신 가능한 것으로 간주합니다.

    • concurrency 속성이 java.sql.ResultSet.CONCUR_UPDATABLE로 설정되어 있지 않습니다.
    • SQL문에 FOR UPDATE절이 포함되어 있지 않습니다.
    pureQuery는 명령문이 갱신 가능하지 않은 경우 읽기 전용으로 간주합니다.
  • 어노테이션이 있는 메소드는 Java™ 스토어드 프로시저로 호출되지 않습니다.
concurrency
java.sql.ResultSet.CONCUR_READ_ONLY
쿼리 결과가 열려 있는 동안 커서가 갱신을 방지함을 지정하는 정수 상수입니다.
java.sql.ResultSet.CONCUR_UPDATABLE
쿼리 결과가 열려 있는 동안 커서가 갱신을 허용함을 지정하는 정수 상수입니다.
cursorName
위치 지정된 갱신 및 삭제 사항에 사용할 커서의 이름을 지정합니다. 이름은 DB2JCCCURSOR 또는 DB_PDQ로 시작할 수 없습니다. 또한 사용자 데이터베이스의 커서 이름 지정 규칙을 준수해야 합니다.
holdability
java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT
트랜잭션 종료 시 커서가 닫힘을 지정하는 정수 상수입니다.
java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT
트랜잭션 종료 시 커서가 열린 채 유지됨을 지정하는 정수 상수입니다.
type
java.sql.ResultSet.TYPE_FORWARD_ONLY
커서가 앞으로만 이동할 수 있음을 지정하는 정수 상수입니다.
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE
커서가 앞뒤로 이동할 수 있음을 지정하는 정수 상수입니다. 쿼리 결과가 데이터의 스냅샷을 제공합니다.
java.sql.ResultSet.TYPE_SCROLL_SENSITIVE
커서가 앞뒤로 이동할 수 있음을 지정하는 정수 상수입니다. 쿼리 결과는 커서가 보류되어 있는 동안 데이터에 작성된 변경사항을 반영합니다.
@Handler
어노테이션이 있는 메소드를 실행할 때, pureQuery의 디폴트 프로시저 대신 제공된 구현 클래스를 사용하도록 pureQuery에 지시합니다.
callHandlerWithParameters
com.ibm.pdq.handlers.CallHandlerWithParameters<CAL> 인터페이스의 구현을 지정합니다. 이 속성을 지정하는 경우 pureQuery는 클래스를 사용하여 SQL 스토어드 프로시저 CALL 결과를 처리하고 어노테이션이 있는 메소드가 리턴한 오브젝트를 작성합니다. 클래스의 handleCall() 메소드는 SQL 스토어드 프로시저 호출의 결과를 처리하고 결과를 설명하는 <CAL> 유형의 오브젝트를 리턴합니다.
parameterHandler
com.ibm.pdq.handlers.ParameterHandler 인터페이스의 구현을 지정합니다. 이 속성을 지정하는 경우 pureQuery는 클래스를 사용하여 SQL문의 java.sql.PreparedStatement 오브젝트에서 매개변수 값을 설정합니다.
어노테이션이 있는 메소드가 스토어드 프로시저를 호출하는 경우, ParameterHandler는 OUT 및 INOUT 매개변수를 등록해야 합니다.
resultHandler
com.ibm.pdq.handlers.ResultHandler<RES> 인터페이스의 구현을 지정합니다. 이 속성을 지정하는 경우 pureQuery는 클래스를 사용하여 어노테이션이 있는 메소드가 리턴하는 오브젝트를 작성합니다. 클래스의 handle() 메소드는 SQL문에 대해 java.sql.ResultSet를 처리하고 <RES> 유형의 오브젝트에 컨텐츠를 리턴합니다.
rowHandler
com.ibm.pdq.handlers.RowHandler<ROW> 인터페이스의 구현을 지정합니다. 이 속성을 지정하는 경우 pureQuery는 클래스를 사용하여 어노테이션이 있는 메소드가 리턴하는 쿼리 결과의 각 행을 표시하는 오브젝트를 작성합니다. 클래스의 handle() 메소드는 SQL문에 대해 java.sql.ResultSet를 처리하고 <ROW> 유형의 오브젝트에 컨텐츠를 리턴합니다.
@Select
메소드가 SQL SELECT문을 실행하도록 지정합니다.
sql
실행할 메소드의 SELECT문을 지정합니다.
@Update
메소드가 SQL DML(Data Manipulation Language) 또는 DDL(Data Definition Language)문을 실행하도록 지정합니다.
sql
실행할 메소드의 SQL문을 지정합니다.
positionedCursorName
위치 지정된 갱신 및 삭제 사항에 사용할 커서의 이름을 지정합니다. 이름은 @Select 어노테이션의 cursorName 속성에 정의해야 합니다.
이 속성을 사용하는 메소드를 선언하는 인터페이스의 구현을 생성하는 경우, pureQuery는 필수 WHERE CURRENT OF절을 UPDATE 또는 DELETE문에 추가합니다.
method-name
인터페이스 메소드의 이름을 지정합니다.
parameter-type parameter-name

메소드 호출 시 예상되는 인수의 유형 및 이름을 표시하는 반복 인수 쌍.

이러한 매개변수는 아래 규칙에 따라 SQL문에 지정된 매개변수 표시문자와 일치합니다. 이러한 매개변수는 스칼라 유형, Bean 클래스 또는 Map 오브젝트일 수 있습니다. SQL이 매개변수 참조로 :name 표기를 사용하는 경우, 첫 번째 매개변수 유형은 Bean 또는 Map이어야 합니다. Bean 또는 Map의 등록 정보 이름은 SQL 문자열의 :name 어커런스와 일치를 위해 사용됩니다.

SQL이 매개변수 참조에 대해 ? 표기를 사용하는 경우, 스칼라 값만 제공할 수 있습니다.

?n?n.name 표기가 사용되는 경우, 메소드 매개변수는 모두 스칼라 유형이거나 Bean 클래스와 Map 오브젝트의 조합이어야 합니다.

지정된 매개변수는 일반적으로 입력 변수로만 사용됩니다. 그러나 SQL CALL문에서 OUT 또는 INOUT 매개변수의 경우에는 출력 변수를 표시할 수 있습니다. 자세한 내용은 CALL문 지원에 대해 설명하는 앞 절을 참조하십시오.

return-type
메소드의 리턴 유형을 지정합니다.

다음 테이블에서는 @Call, @Select 및 @Update 어노테이션을 사용하는 메소드에 대해 가능한 리턴 유형에 대해 설명합니다.

표 1. 리턴 유형 테이블에 대한 키
약어 의미
CAL CallHandlerWithParameters
I Iterator
L List
M Map
O Object
R java.sql.ResultSet
RES ResultHandler
ROW RowHandler
S String
SPR StoredProcedureResult
T 기본 Java 유형, 단순 오브젝트 유형 또는 Bean의 랩퍼 클래스인 기본 유형 int. T는 @Update 어노테이션이 있는 경우에만 int일 수 있으며 @Update 어노테이션에서는 T가 int여야 합니다.
표 2. 어노테이션 유형에 따른 리턴 유형
    어노테이션
    @Call @Select @Update
리턴 유형 CAL    
int    
int[]    
I<M<S,O>>  
I<T>  
L<M<S,O>>  
L<T>  
M<S,O>    
M<S,O>[]  
R    
RES    
ROW    
ROW[]    
L<ROW>    
I<ROW>    
SPR    
<T>    
<T>[]  
void  
주: 둘 이상의 ResultSet 오브젝트를 리턴하는 스토어드 프로시저를 사용하고 해당되는 모든 오브젝트를 사용하려는 경우 StoredProcedureResult 리턴 유형을 사용하거나 CallHanderWithParameters<CAL> 인터페이스의 구현을 사용하십시오. @Call 어노테이션과 함께 사용할 수 있는 다른 모든 리턴 유형은 스토어드 프로시저에 대한 호출에서 첫 번째 ResultSet 오브젝트만 리턴합니다.

어노테이션이 있는 메소드를 사용하는 경우, @Select 또는 @Call이 기본 Java 유형이나 기본 Java 유형의 Array, List 또는 Iterator를 리턴하도록 지정하지 마십시오.

SQL에서 쿼리된 정보가 기본 Java 유형으로 저장될 때마다 SQL 널(NULL) 값과 관련된 정보는 유실됩니다. 또한, Java에서는 <기본 Java 유형>.class의 일반 <T> 클래스를 지정하는 일반 메소드가 해당 기본 Java 유형에 적절한 랩퍼 클래스의 인스턴스를 리턴해야 합니다.

예를 들어, Java는 다음과 같은 메소드 호출을 허용하지 않습니다.
int tCount = myGenericMethod( int.class );
여기서 myGenericMethod의 정의는 다음과 같습니다.
<T> T myGenericMethod( Class<T> cl );
tCount의 선언된 클래스는 Integer여야 합니다.
Integer tCount = myQuery.myGenericMethod( Integer.class );

이 제한사항은 어노테이션이 있는 인터페이스에 정의된 메소드 서명에서 일반 메소드 서명의 명시적 사용이 없는 경우(<T> 및 리턴 클래스 정보 사용 안함)에도 일반 메소드의 사용과 연관되어 있습니다. 어노테이션이 있는 인터페이스의 생성된 구현이 인라인 메소드 API와 어느 정도 유사한 메소드를 사용하므로 이 제한사항이 필요합니다. 특히 구현은 일반 메소드를 사용합니다.

void
메소드가 아무것도 리턴하지 않도록 지정합니다.
java.sql.ResultSet
ResultSet 오브젝트가 리턴되도록 지정합니다. ResultSet은 읽기 전용입니다.
StoredProcedureResult
StoredProcedureResult는 CALL문을 호출하는 @Call 어노테이션이 있는 메소드의 리턴 유형으로만 유효합니다. 메소드 실행 후 StoredProcedureResult 오브젝트는 스토어드 루틴에 의해 리턴된 여러 쿼리 결과를 처리하거나 출력 매개변수에 액세스하는 데 사용될 수 있습니다.
int
메소드가 갱신된 행의 수를 리턴하도록 지정합니다.
int[]
메소드가 정수의 배열을 리턴하도록 지정합니다. 배열의 각 요소는 SQL DML(Data Manipulation Language)문의 단일 실행에 대한 갱신 계수를 기록합니다. 일괄처리 갱신에 대해 이 리턴 유형을 사용하십시오.
List<Map<String,Object>>
메소드가 Map<String,Object> 오브젝트의 목록을 리턴하도록 지정합니다.
자세한 내용은 리턴된 Map<String,Object> 오브젝트의 설명을 참조하십시오.

모든 기본 데이터베이스 ResultSet 오브젝트가 닫힙니다.

List<T>
T 유형의 List 오브젝트가 리턴되도록 지정합니다. 주어진 SQL문이 쿼리일 때, 각 요소는 쿼리 결과의 행에 해당합니다.

<T> 오브젝트가 CALL문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 스토어드 프로시저가 리턴하는 첫 번째 ResultSet 오브젝트입니다.

<T> 오브젝트가 SELECT문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 쿼리의 결과입니다.

모든 쿼리 결과 행은 메소드가 호출되고 모든 기본 데이터베이스 ResultSet 오브젝트가 닫힐 때 구체화됩니다.
Map<String,Object>
Map<String,Object> 오브젝트가 구성되고 리턴되도록 지정합니다. 쿼리 결과의 리턴 컬럼 레이블이 맵의 키가 됩니다. 컬럼 레이블은 일반 Java 코딩 양식을 더 엄격히 준수하기 위해 소문자로 변환됩니다. 쿼리 결과 행의 해당 컬럼 값은 Map 오브젝트의 값이 됩니다.둘 이상의 행이 규정되는 경우, 첫 번째 행의 값이 리턴됩니다.

Map<String,Object> 오브젝트가 CALL문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 스토어드 프로시저가 리턴하는 첫 번째 ResultSet 오브젝트입니다.

Map<String,Object> 오브젝트가 SELECT문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 쿼리의 결과입니다.

모든 기본 데이터베이스 ResultSet 오브젝트가 닫힙니다.

Map<String,Object>[]
Map<String,Object> 오브젝트의 배열이 구성되고 리턴되도록 지정합니다. 리턴된 Map<String,Object> 오브젝트의 설명을 참조하십시오.

모든 기본 데이터베이스 ResultSet 오브젝트가 닫힙니다.

<T>

스칼라 또는 Bean이 리턴되도록 지정합니다. 스칼라는 Double 또는 String, Date 또는 Timestamp와 같은 랩퍼일 수 있습니다.

제공된 SQL문이 쿼리이고 둘 이상의 행이 규정되는 경우, 첫 번째 행의 값이 리턴됩니다.

모든 기본 데이터베이스 ResultSet 오브젝트가 닫힙니다.

<T>[]
T 유형의 배열(예: Employee[], Integer[] 또는 String[])이 리턴되도록 지정합니다.
  • 주어진 SQL문이 쿼리일 때, 각 요소는 쿼리 결과의 행에 해당합니다.
  • <T> 오브젝트가 CALL문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 스토어드 프로시저가 리턴하는 첫 번째 ResultSet 오브젝트입니다.
  • 주어진 SQL문이 쿼리 또는 ResultSet을 리턴하는 CALL문이 아닌 경우, 배열의 각 요소는 명령문이 리턴한 갱신 계수로 설정된 int여야 합니다.
모든 쿼리 결과 행은 메소드가 호출되고 모든 기본 데이터베이스 ResultSet 오브젝트가 닫힐 때 구체화됩니다.
Iterator<Map<String,Object>>

Map<String,Object> 오브젝트의 Iterator가 리턴되도록 지정합니다. 자세한 내용은 리턴된 Map<String,Object> 오브젝트의 설명을 참조하십시오.

응용프로그램이 Iterator에 대해 각 next() 조작을 실행할 때 쿼리 결과 행이 데이터 소스에서 검색됩니다.

pureQuery의 Iterator 유형은 ResultIterator입니다. Iterator 사용 완료 후 ResultIterator.close() 메소드를 사용하여 Iterator를 닫아야 합니다.

Iterator<T>

각 요소가 행에 해당하는 Iterator 오브젝트가 리턴되도록 지정합니다. 매개변수화된 유형 T를 지정해야 합니다.

응용프로그램이 Iterator에 대해 각 next() 조작을 실행할 때 쿼리 결과 행이 데이터 소스에서 검색됩니다.

<T> 오브젝트가 CALL문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 스토어드 프로시저가 리턴하는 첫 번째 ResultSet 오브젝트입니다.

<T> 오브젝트가 SELECT문에 의해 리턴되는 경우, 오브젝트를 채우는 데이터의 소스는 쿼리의 결과입니다.

pureQuery의 Iterator 유형은 ResultIterator입니다. Iterator 사용 완료 후 ResultIterator.close() 메소드를 사용하여 Iterator를 닫아야 합니다.

sql
연관된 메소드가 호출될 때 실행되는 SQL문을 제공합니다. SQL문은 목표 데이터베이스에 대해 유효해야 합니다. pureQuery는 또한 여러 개의 매개변수 표시문자를 정의합니다. 이러한 표시문자는 인라인 메소드 또는 어노테이션이 있는 매소드의 입력 매개변수에 해당합니다.
CALL문을 실행하려는 경우 일부 JDBC 드라이버에서는 사용자가 JDBC/ODBC 확장 시퀀스를 사용해야 합니다.

피드백