1. iBatis 사이트에서 library 다운.

 WEB-INF/lib 폴더에 library 를 추가한다.

2. sql을 관리할 sql 폴더를 만든다.

이클립스에서 맨 왼쪽 아래 아이콘 클릭 하여 Navigator 클릭.
src/com/myhome/info/ 에서 sql 폴더를 하나 만든다.
sql폴더 안에 SqlMap.xml, SqlMapConfig.xml 을 만든다.
SqlMapConfig.xml 안에서 JNDI에 관한 내용 구현.

3. SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
 PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0 //EN"
 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
    <settings
  cacheModelsEnabled="true"
  enhancementEnabled="true"
  lazyLoadingEnabled="true"
  maxRequests="32"
  maxSessions="10"
  maxTransactions="5"
  useStatementNamespaces="false"
 />

<!-- JNDI resource type-->
   <transactionManager type="JDBC" >
 <dataSource type="JNDI">
   <property name="DataSource"
      value="java:comp/env/jdbc/XE"/>
 </dataSource>
   </transactionManager>
 <sqlMap resource="com/myhome/info/sql/SqlMap.xml" />
</sqlMapConfig>

JNDI를 사용하기 때문에 server.xml에 JNDI 설정을 추가한다.

4. Server의 server.xml

이 부분은 이미 서버 설정하는 글에서 해주었다.

<GlobalNamingResources> 여기 사이에 추가한다.</GlobalNamingResources>


<Resource name="jdbc/XE"
              auth="Container"
              type="javax.sql.DataSource"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              factory="org.apache.commons.dbcp.BasicDataSourceFactory"
              url="jdbc:oracle:thin:@localhost:1521:XE"
              username="user01"
              password="user01"
              maxActive="20"
              maxIdle="10"
              maxWait="-1" />

5. Server의 context.xml 가장 하단에 추가한다.

<ResourceLink global="jdbc/XE"
                  name="jdbc/XE"
                  type="javax.sql.DataSource"/>

※ JNDI말고 다른 방법을 사용하는 경우.

SqlMapConfig.xml에 다음에 같이 추가한다.

1) simple datasource type  사용

<transactionManager type="JDBC" commitRequired="false">
        <dataSource type="SIMPLE">
            <property name="JDBC.Driver"
                      value="oracle.jdbc.driver.OracleDriver"/>
            <property name="JDBC.ConnectionURL"
                      value="jdbc:oracle:thin:@localhost:1521:XE"/>
            <property name="JDBC.Username" value="user01"/>
            <property name="JDBC.Password" value="user01"/>
        </dataSource>
    </transactionManager>

2) DBCP datasource type 사용

<properties resource=" info/model/dao/db.properties " />
   <transactionManager type="JDBC" >
  <dataSource type="SIMPLE">
  <property name="JDBC.Driver" value="${driver}"/>
  <property name="JDBC.ConnectionURL" value="${url}"/>
  <property name="JDBC.Username" value="${username}"/>
  <property name="JDBC.Password" value="${password}"/>
  <property name="JDBC.DefaultAutoCommit" value="true" />
  <property name="Pool.MaximumActiveConnections" value="10"/>
  <property name="Pool.MaximumIdleConnections" value="5"/>
  <property name="Pool.MaximumCheckoutTime" value="120000"/>
  <property name="Pool.TimeToWait" value="500"/>
  </dataSource>
  </transactionManager>

6. SqlMap.xml 설정.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>
  <typeAlias alias="Info" type="com.myhome.info.dto.InfoDTO"/> <!-- alias : 별칭을 잡겠다는 의미 -->
 
  <insert id="infoInsert" parameterClass="Info"> <!-- typeAlias한 Info를 넣는다 없으면 com.. 그대로 넣어도 된다. -->
   INSERT INTO INFO
    (NUM, NAME, SEX, TEL, WDATE)
   VALUES
    (NUMSEQ.NEXTVAL, #name#, #sex#, #tel#, #wdate#) <!-- ## Info 안에 가지는 프로퍼티 대소문자가 정확하게 맞아야 한다. -->
  </insert>
 
  <select id="infoList" resultClass="info">
   SELECT
    NUM, NAME, SEX, TEL, WDATE
   FROM
    INFO
   Order by
    NUM desc
  </select>
   
</sqlMap>

7. SQLManager.java 만들기.

package com.myhome.manager;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public abstract class SQLManager {
 
 private SqlMapClient sc = null;
 
 public SQLManager(){
  try{
   sc = SqlMapClientBuilder.buildSqlMapClient(
            Resources.getResourceAsReader(
              "com/myhome/info/sql/SqlMapConfig.xml"));
  }catch(java.io.IOException ie){
   ie.printStackTrace();
  }
 }
 
 public SqlMapClient getSqlMap(){
      return sc; 
    
 }
}

8. InfoDAO.java 만들기.

package com.myhome.info.dao;

import com.myhome.info.dto.InfoDTO;
import com.myhome.manager.SQLManager;
import java.sql.SQLException;
import java.util.List;

public class InfoDAO extends SQLManager{

 /*등록부분*/
 public void register(InfoDTO dto) throws SQLException{
  this.getSqlMap().insert("infoInsert", dto);
 }

 /*회원 리스트 부분*/
 public List<InfoDTO> getAllQuery() throws SQLException{
  List<InfoDTO> list = null;
  list = this.getSqlMap(). queryForList("infoList");
  return list;
 }
 
}

'FrameWork > Struts1' 카테고리의 다른 글

Struts1 FileDownload  (0) 2009.08.18
Struts1 fileUpload  (0) 2009.08.18
Struts1의 Action 4  (0) 2009.08.16
Struts1의 Action 3  (0) 2009.08.16
Struts1의 Action 2  (0) 2009.08.12
Struts1의 Action 1  (0) 2009.07.27
Struts1에서 ActionForm 사용하기.  (0) 2009.07.25
Struts 1 을 사용하여 간단한 회원가입, 리스트 불러오기.  (0) 2009.07.05
Struts1 개발환경 설정.  (0) 2009.07.05
Struts(스트럿츠) 란?  (0) 2009.06.27

+ Recent posts