달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
.. .. ..

[펌] : http://www.mimul.com/pebble/default/2007/12/09/1197199680000.html

 

 sqlmap.xml 정의

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<properties resource="com/mimul/dwr/app/resource/database.properties"/>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="40"
maxSessions="20"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSource type="DBCP">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>

<!-- OPTIONAL PROPERTIES BELOW -->
<property name="initialSize" value="5"/>
<property name="maxActive" value="30"/>
<property name="maxIdle" value="20"/>
<property name="maxWait" value="60000"/>
<property name="poolPreparedStatements" value="true"/>
<property name="validationQuery" value="select 0 from dual"/>
<property name="testOnBorrow" value="true"/>
<property name="maximumActiveConnections" value="10"/>
<property name="maximumIdleConnections" value="5"/>
<property name="maximumWait" value="60000"/>
<property name="logAbandoned" value="false"/>
<property name="removeAbandoned" value="false"/>
<property name="removeAbandonedTimeout" value="50000"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/mimul/dwr/app/sql/Mimul.xml"/>
</sqlMapConfig>
4. com/mimul/dwr/app/resource/database.properties 정의
driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@mimuluserdb:1521:mimuluser
username=mimuluser
password=mimuluser
5. com/mimul/dwr/app/sql/Mimul.xml 정의
- DDL2iBatis.exe를 활용하여 자동 생성하게 하는 것이 개발 속도가 올라갑니다.
<?xml version='1.0'?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Mimul">
<cacheModel id="mimul-cache" type="MEMORY">
<flushInterval hours="24"/>
<flushOnExecute statement="insertMimul"/>
<flushOnExecute statement="updateMimul"/>
<flushOnExecute statement="deleteMimul"/>
<property name="reference-type" value="WEAK" />
</cacheModel>
<resultMap class="com.mimul.dwr.model.Mimul" id="mimul-result" >
<result property="lseq" column="lseq" />
<result property="sseq" column="sseq" />
<result property="assetid" column="assetid" />
<result property="title" column="title" />
<result property="imgurl" column="imgurl" />
<result property="vodurl" column="vodurl" />
<result property="use" column="use" />
<result property="chgdate" column="chgdate" />
</resultMap>
<select id="getMimul" resultClass="com.mimul.dwr.model.Mimul"
parameterClass="Integer" >
<![CDATA[
SELECT lseq, sseq, assetid, title, imgurl, vodurl, use, chgdate
FROM mimul
WHERE lseq = #lseq#
]]>
</select>
<update id="updateMimul" parameterClass="com.mimul.dwr.model.Mimul" >
<![CDATA[
UPDATE mimul
SET sseq = #sseq#, assetid = #assetid#, title = #title#,
imgurl = #imgurl#, vodurl = #vodurl#, use = #use#,
chgdate = #chgdate#
WHERE lseq = #lseq#
]]>
</update>
<insert id="insertMimul" parameterClass="com.mimul.dwr.model.Mimul" >
<selectKey resultClass="int" keyProperty="lseq" >
SELECT mimul_lseq_seq.nextval as lseq FROM dual
</selectKey>
INSERT INTO mimul (lseq, sseq, assetid, title, imgurl, vodurl,
use, chgdate)
VALUES (#lseq#, #sseq#, #assetid#, #title#, #imgurl#, #vodurl#,
#use#, #chgdate#)
</insert>
<delete id="deleteMimul" parameterClass="com.mimul.dwr.model.Mimul" >
<![CDATA[
DELETE FROM mimul
WHERE lseq = #lseq#
]]>
</delete>
</sqlMap>
6. DAO에서 사용하기 위한 SqlConfig 객체 정의(dbcp+ibatis연결 정보 정의)
import java.io.File;
import java.io.Reader;

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

public class SqlConfig {
private static SqlMapClient sqlMap = null;
private static SqlConfig instance_ = null;

private SqlConfig() throws Exception
{
Reader reader = null;
StringBuffer rsc = null;
try {
if (sqlMap == null) {
rsc = new StringBuffer(200);
rsc.append("com").append(File.separator);
rsc.append("jaeminara").append(File.separator);
rsc.append("dwr").append(File.separator);
rsc.append("app").append(File.separator);
rsc.append("sql").append(File.separator).append("sqlmap.xml");
reader = Resources.getResourceAsReader(rsc.toString());
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}
} catch (Exception e) {
System.out.println(e);
throw e;
} finally {
if (reader != null)
reader.close();
reader = null;
rsc = null;
}
}

public static SqlConfig instance()
{
try {
if (instance_ == null) {
synchronized (SqlConfig.class) {
if (instance_ == null)
instance_ = new SqlConfig();
}
}
} catch (Exception e) {
System.out.println(e);
}
return instance_;
}

/**
* Return SqlMapClient for SDP schema
*
* @return
*/
public static SqlMapClient getSqlMapInstance()
{
return sqlMap;
}
}

7. DAO 클래스 정의
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.mimul.common.log.LogPool;
import com.mimul.dwr.model.getMimulByLSEQ;

public class MimulDao
{
private SqlMapClient smc =
SqlConfig.instance().getSqlMapInstance();

public void MimulDao() {}

public Mimul getMimulByLSEQ(int lseq) throws Exception
{
Mimul mimul = null;

try {
if (lseq == 0) {
LogPool.instance("DAO").debug("getMimulByLSEQ() : Parameter is null!");
return null;
}
mimul = (Mimul) smc.queryForObject("getMimul", lseq);
} catch (Exception e) {
LogPool.instance("DAO").error(e);
throw e;
}
return mimul;
}
// 기타 필요한 함수 정의
}
크게 어려운 점은 없습니다. 그리고 transaction 무결성을 보장하기 위해서는 executor.startBatch();와 executor.executeBatch(); transaction 처리 로직을 넣으시면 됩니다.
나머진 자동으로 iBatis에서 트랜젝션 자원의 할당 및 해지의 라이프사이클을 관리해 줍니다.

 

'I.lib() > I.lib(iBatis)' 카테고리의 다른 글

Mybatis 설정  (0) 2013.04.01
Spring + iBatis 연동시 org.apache.commons.dbcp.BasicDataSource 설정  (1) 2010.04.27
Ibatis settings 요소  (1) 2010.04.12
[IBatis] 결과가 NULL 일때 대처방법.  (0) 2010.03.23
iBatis 강의 자료.  (0) 2010.02.24
.
:
Posted by .07274.