티스토리 뷰

 [jsp11강] JSTL SQL 태그 사용법



이번글에서는 JSTL 에서 SQL 태그에 대해서 알아보겠습니다.

우선 강의에 들어가기전..

JSTL 무엇인지 모르거나.. 태그의종류 및 라이브러리 설정법이 모르시면..

아래링크를 참조해주세요!


 이전 글 링크 


JSTL 에서 SQL 태그는 솔찍히 안쓰입니다.

대체되는것들이 워낙에나 많이 있습니다.

웹개발을 한다면.. 

MVC 패턴으로 개발은 진행하시거나.. 

스프링 프레임웍 또는 전자정부프레임웍에서 개발을 진행하시면..

iBatis와 MyBatis 를 사용하기에.. jsp 페이지에서 jstl sql 태그를 사용할 일이 없습니다.

그러나 안쓰는 기능이라도 존재하는 기능이기에 한번을 알아볼 필요는 있다고 생각합니다.

그럼 jstl sql 태그에 대해서 알아보겠습니다.


 1. setDataSource (데이터베이스 연결)

1.  <sql:setDataSource> 태그


데이터 베이스를 지정 및 연결하는 태그입니다.

데이터 베이스를 사용할때 가장 먼저하는것이 바로 데이터 베이스 연결입니다.

JDBC 드라이버부터 시작하여 url, user, pass 등등 설정합니다.


문법은 요렇게 쓰시면 됩니다.

 사용 문법 

<sql:setDataSource {dataSource="dataSource" | url ="jdbcUrl" driver="driverClassName" user="userName" password="password"} var="varName" scope="{page|request|session|application}"/>



url 속성 : JDBC url

dataSource 속성 : 컨텍스트에 JNDI 설정 시 리소스 네임

driver 속성 : JDBC driver

user 속성 : 데이터베이스 사용자 계정

password 속성 : 사용자 패스워드

var 속성 : 변수에 데이터소스의 스펙 저장

scope 속성 : var의 scope 지정



 2. query, udate, param, dataParam (쿼리)


2.  <sql:query>, <sql:udate>, <sql:param>, <sql:dataParam> 태그 


<sql:query>, <sql:udate> 태그는 태그명칭만 봐도 무엇을 하는지 알수있습니다.

바로 쿼리를 실행하는 기능을 갖은 태그입니다. 

<sql:query> 태그는 쉽게 생각하시면 select 문에 사용을 하고... (ResultSet)

<sql:udate> 태그는 DDL 언어를 사용하는 insert, update, delete 문에 사용합니다. (DML의 crete, drop, alter 도 사용가능합니다.)

그럼 <sql:param>, <sql:dataParam> 태그 는 무엇일까요?

쿼리를 실행한때 조건이 있다면 조건에 값을 넣어주기위해 사용하는 태그입니다.

예를들어 

select * from user where name=? 

요런 쿼리가 있다면.. 물음표의 부분에 값을 대입시켜주는것이죠.

근대왜 두종류인 <sql:param>, <sql:dataParam> 이 있는것일까요?

그건.. 데이터 타입때문입니다.

<sql:param> 은 문자(string) 타입이고..

<sql:dataParam> 은 날짜(date) 타입 입니다.


문법은 요렇게 쓰시면 됩니다.

사용 문법 

<sql:query> 3가지 사용법


<sql:qeury sql="sqlQuery" var="varName" scope="{page|request|session|application}" dataSource="dataSource" maxRows="maxRows" startRow="startRow" />


또는


<sql:query sql="sqlQuery" var="varName" scope="{page|request|session|application}" dataSource="dataSource" maxRows="maxRows" startRow\"startRow">

    <sql:param> 태그들

</sql:query>


또는


<sql:query var="varName" scope="{page|request|session|application}" dataSource="dataSource" maxRows="maxRows" startRow="startRow">

    SQL 쿼리 문장

    <sql:param> 태그들

</sql:query>


sql 속성 : SQL 쿼리 문장

var 속성 : 쿼리의 결과를 저장

scope 속성 : var의 scope 지정

dataSource 속성 : JNDI의 리소스 네임 또는 DriverManager를 위한 파라미터

maxRows 속성 : 쿼리의 결과에 포함될 최대 행의 수

startRow 속성 : 쿼리의 결과에 포함될 시작 행 번호로 0부터 시작한다.


<sql:update> 3가지 사용법


<sql:update sql="sqlUpdate" dataSource="dataSource" var="varName" scope="{page|request|session|application}"/>


또는


<sql:update sql="sqlUpdate" dataSource="dataSource" var="varName" scope="{page|request|session|application}">

    <sql:param> 태그들

</sql:update>


또는


<sql:update dateSource="dataSource" var="varName" scope="{page|request|session|application}">

    SQL 쿼리 문장

   <sql:param> 태그들

</sql:update>


sql 속성 : SQL 쿼리 문장

var 속성 : 쿼리의 결과를 저장

scope 속성 : var의 scope 지정

dataSource 속성 : JNDI의 리소스 네임 또는 DriverManager를 위한 파라미터



<sql:param>


<sql:param value="value"/>


value 속성 : 파리미터의 값을 지정한다.


<sql:dateParam>


<sql:dateParam value="value" type="{timestamp|time|date}"/>


value 속성 : 파리미터의 값을 지정한다.

type 속성 : timestamp, time, date 중 하나를 기술한다.




 3. transaction (트랜잭션)


3. <sql:transaction> 태그


트랜잭션을 구현할때 사용하는 태그입니다.


사용 문법 

<sql:transaction dataSource="dataSource" isolation="isolationLevel">

    <sql:query> 태그

    <sql:update> 태그

    ....

</sql:transaction>


dataSource 속성 : JNDI의 리소스 네임 또는 DriverManager를 위한 파라미터

isolation 속성 : 격리 수준(isolationLevel) 값을 넣는데, java.sql.Connection의 setTransactionIsolation() 메소드를 사용한다. "read_committed", "read_uncommitted", "repeatable_read", "serializable"중 하나를 사용한다.



 글을 마치며..


이번글에서는 JSTL SQL 태그에 대해서 알아보았습니다.

현 시점에서 사용도가 많이 떨어지지만...

어디까지 지원해주나? 라는 호기심은 해결될만한 글이라고 생각합니다.

그럼 정리해보겠습니다.


 정리 

 1. JSTL SQL 태그는 사용도가 떨어진다... 이미 대처될만한 좋은 기술들이 많이 있다.

2. 디비연결 및 쿼리실행, 데이터 출력을 할수 있다.


이상으로 JSTL SQL 태그 사용법에 대해서 알아보았습니다.

수고하세요!


도움이 되셨다면 로그인 없이 가능한

아래 하트♥공감 버튼을 꾹 눌러주세요! 


댓글