<x:batch>

x:batch 조치는 JSP SQL 조치 세트를 그룹화하는 데 사용됩니다. 그룹화하는 이유는 두 가지입니다. 하나는 모두 지정할 때까지 x:updateRow, x:insertRowx:deleteRow 조치 세트 처리를 지연하기 위해서입니다. 다른 이유는 조치 세트가 동일 데이터베이스 연결을 사용하도록 하기 위해서입니다.

구문

JSP 페이지가 x:repeat 요소 내에서 x:insertRow 또는 x:deleteRow 조치를 사용할 경우, 올바른 결과를 얻으려면 x:repeat 요소를 x:batch 조치 본문에 놓아야 합니다. 그렇게 하지 않으면 잘못된 행이 갱신 또는 삭제되거나 행에서 잘못된 위치에 삽입될 수 있습니다. x:insertRowx:deleteRow 조치는 결과 세트에서 후속 행의 번호 매김을 변경합니다. 이 조치를 지연하면 현재 행 번호를 사용하여 이들을 행의 대상으로 지정할 수 있습니다. 행 번호는 x:batch 끝에서 모든 조치가 처리될 때까지 변경되지 않습니다.

모든 조치를 x:batch 내에 위치시킬 수 있지만, x:updateRow, x:insertRowx:deleteRow 조치만 지연됩니다. 또한 x:batch 내에 서로 다른 DBSelectDBProcedureCall Bean에 적용하는 조치를 위치시킬 수도 있습니다.

x:batch 내의 모든 조치는 동일 데이터베이스 연결을 사용하여 수행됩니다. 선택사항으로, 일괄처리된 조치는 끝에 도달할 때까지 확약 발생없이 동일 데이터베이스 트랜잭션 내에서 모두 발생하도록 지정할 수 있습니다. DataException이 이 트랜잭션 중에 발생할 경우 확약 대신 롤백이 수행됩니다.

<x:batch	 
		connectionSpec = "connectionSpec_id"
		connectionSpecRef = "connectionSpecRef"
		singleTransaction = "true|false">
</x:batch>

x:batch 조치에는 다음과 같은 속성이 있습니다.

connectionSpec
x:dataSourceSpec 또는 x:driverManagerSpec 조치의 ID를 지정합니다. 값은 대소문자가 구분되며 범위 내에 있는 connectionSpec 조치와 일치해야 합니다.

참조된 조치는 데이터베이스와의 연결을 작성하는 데 필요한 정보를 제공합니다. 일괄처리된 모든 조치는 동일 연결을 사용하여 수행됩니다. x:batch 내부의 임의 조치에서 connectionSpec 속성을 지정할 경우, 오류 플래그가 표시됩니다.

connectionSpecRef
연결을 작성하는 데 필요한 정보를 확보하기 위해 사용할 DBConnectionSpec 오브젝트에 대한 참조를 지정합니다.

connectionSpec 또는 connectionSpecRef 중 하나를 지정할 수 있으며 둘 다 지정할 수는 없습니다.

singleTransaction
x:batch 내의 모든 조치를 단일 데이터베이스 트랜잭션 범위 내에 수행해야 하는지 여부를 지정합니다. false 값을 사용할 경우, 각각의 일괄처리된 조치 다음에 확약이 내포됩니다. true 기본값을 사용할 경우에는 일괄처리된 모든 조치를 완료할 때까지 확약이 수행되지 않습니다.

x:batch 조치의 본문에 JSP SQL 태그가 올 수 있습니다. 다음 조치는 지연됩니다.

예제

이 예제는 select1에 의해 생성되는 결과 세트의 행 사이를 반복합니다. 색인화된 요청 매개변수 delete를 선택한 경우 행이 삭제됩니다.

<x:batch connectionSpec= "conn1">
	<x:repeat name="select1" over="rows"
index="rowNumber">
		<% if (request.getParameter("delete"+rowNumber)!= null)
			{ %><x:deleteRow />
		<% } %>
	</x:repeat>
</x:batch>									

이 예제는 select1에 의해 생성되는 결과 세트에서 행을 삭제하고 select2에서 생성되는 결과 세트에 행을 삽입합니다. x:batch를 사용하면 단일 데이터베이스 트랜잭션 내에서 이를 수행할 수 있습니다.

<x:batch connectionSpec="conn1"
singleTransaction="true">
	<x:deleteRow name="select1"/>
	<x:insertRow name="select2"/>
</x:batch>									
피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.