iBATIS - DAO 개념 사용. 싱글턴 DaoManager
Posted 11 21, 2008 01:05, Filed under: Language/ㅡ iBATISEmp.java - POJO
package daoEx.vo;
public class Emp {
private int empno, deptno, sal;
private String ename, job, hiredate;
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public int getSal() {
return sal;
}
public void setSal(int sal) {
this.sal = sal;
}
}
EmpInter.java - 인터페이스
package daoEx.inter;
import java.util.List;
import daoEx.vo.Emp;
public interface EmpInter
{
public List<Emp> getAllEmp();
}
EmpInterImpl.java
package daoEx.inter;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;
import daoEx.vo.Emp;
import java.util.List;
/*
* 1. DAO 환경에서 구현객체는 반드시 SqlMapDaoTemplate으로부터
* 상속을 받아야 한다. 그리고
* 2. DaoManager 객체를 인자로 받는 생성자 또한 정의 해야한다.
*/
public class EmpInterImpl extends SqlMapDaoTemplate implements EmpInter
{
// 생성자를 만들어준다. DaoManager 객체는 ibatis.dao가 가지고있는 클래스
public EmpInterImpl(DaoManager daoManager)
{
super(daoManager);
}
public List<Emp> getAllEmp()
{
// config 디렉토리에 Emp.xml에 선언된 selectAllEmp 쿼리문을 리턴해준다.
return queryForList("selectAllEmp");
}
}
EmpClient.java
package daoEx.client;
import daoEx.inter.EmpInter;
import daoEx.vo.Emp;
import service.DaoService;
public class EmpClient
{
public static void main(String[] arr)
{
// DaoService에 있는 getDao를 통하여 원하는 Dao(인터페이스)를 얻어낸다.
EmpInter obj = (EmpInter) DaoService.getDao(EmpInter.class);
for(Emp e : obj.getAllEmp())
{
System.out.println(e.getEmpno()+", "+e.getEname());
}
}
}
DaoService.java
package service;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.Dao;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.DaoManagerBuilder;
import java.io.Reader;
public class DaoService
{
// 싱글턴 static 객체를 생성한다.
private static DaoManager dm;
public static Dao getDao(Class n)
{
try
{
if(dm == null)
{// 최초 호출시 수행하는 부분. dm이 null값일경우 로드한다.
// sqlMapConfig.xml 을 로딩하던 기존과 다르다.
Reader reader = Resources.getResourceAsReader("config/dao.xml");
dm = DaoManagerBuilder.buildDaoManager(reader);
// implement된 객체들을 dm 객체에 담아둔다.
reader.close();
}
} catch (Exception e)
{
System.out.println(e.getMessage());
}
// DaoManager 클래스 안에 getDao() 메서드를 리턴해준다.
return dm.getDao(n);
}
}
------------------------- xml -------------------------
sqlMapConfig.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE sqlMapConfig PUBLIC '-//ibatis.apache.org//DTD SQL Map Config 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-config-2.dtd'>
<sqlMapConfig>
<transactionManager type="JDBC" commitRequired="false">
<!-- WEB 환경으로 할때는 대부분 JNDI 로 설정-->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@203.236.209.201:1521:orcl"/>
<property name="JDBC.Username" value="scott"/>
<property name="JDBC.Password" value="tiger"/>
</dataSource>
</transactionManager>
<sqlMap resource="config/Emp.xml"/>
</sqlMapConfig>
Emp.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE sqlMap PUBLIC '-//ibatis.apache.org//DTD SQL Map 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-2.dtd'>
<sqlMap>
<typeAlias alias="empVo" type="daoEx.vo.Emp"/>
<select id="selectAllEmp" resultClass="empVo">
SELECT * FROM emp
</select>
</sqlMap>
dao.xml
<?xml version="1.0" encoding="euc-kr"?>
<!DOCTYPE daoConfig PUBLIC '-//ibatis.apache.org//DTD DAO Configuration 2//EN' 'http://ibatis.apache.org/dtd/dao-2.dtd'>
<daoConfig>
<context id="sqlMap">
<!-- type="SQLMAP"은 지정된 타입 type="JDBC" 를 입력할경우 <datasource 를 사용할수 있다 -->
<transactionManager type="SQLMAP">
<!-- name="SqlMapConfigResource" 키값이므로 정확히 -->
<property name="SqlMapConfigResource" value="config/sqlMapConfig.xml"/>
</transactionManager>
<dao interface="daoEx.inter.EmpInter" implementation="daoEx.inter.EmpInterImpl"/>
</context>
</daoConfig>
"Language / ㅡ iBATIS" 분류의 다른 글
| iBATIS - sqlMap.xml(상속관계) , 조인 쿼리 (0) | 2008/11/20 |
| iBATIS - Oracle(Emp, Dept) Join 결과값 출력 형식 (0) | 2008/11/19 |
| iBATIS - 이용 POJO빈에서 객체 값 가져오기 (0) | 2008/11/19 |
Trackback URL : http://develop.sunshiny.co.kr/trackback/13