아무튼 개발
article thumbnail
반응형

 

Mybatis를 들어가기에 앞서 iBatis에 대해 알아보려고 한다.

지난 struts 세팅에 이어 iBatis 세팅을 해볼 것이다.

 

총 4개의 파일로 이루어 진다.

 

sqlMapConfig.xml

 

cacheModelsEnabled : 캐시 사용 여부

useStatementNamespaces : namespace 사용 여부

 

transactionManager에서는 오토커밋을 안하며

type은 SIMPLE로 단일 데이터 베이스를 사용하겠다는 의미이다.

 

그 외에 각자 JDBC 계정에 맞게 입력해주면 된다.

resource에는 사용할 맵 xml을 입력한다.

 

이제 입력한 text를 object로, 즉 위의 xml을 객체화 시키는 작업이 필요하다.

따라서 아래의 코딩을 입력해준다.

 

 

SqlMapConfig.java

public class SqlMapConfig {	
	private static final SqlMapClient sqlMap;
	
	static {		
		try {			
			String resource = "com/util/sqlMap/sqlMapConfig.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			
			sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException("sqlMap Error : " + e);
		}	
	}	
	public static SqlMapClient getSqlMapInstance() {
		return sqlMap;
	}
}

 

변수 sqlMap에 xml에서 읽어온 데이터 객체를 담는다.

resource 안에는 단순히 주소라는 문자가 들어가는 것이며

reader를 통해 그 주소가 실행되도록 한다.

최종적으로 SqlMapClientBuilder가 객체를 만들어서 가장 상단의 sqlMap의 값으로 들어가게 된다.

 

나아가 getSqlMapInstance() 메소드를 호출하면 sqlMap의 값이 반환되게 된다.

 

 

CommonDAO.java

public interface CommonDAO {

	public void insertData(String id, Object value);

인터페이스를 생성하였다. 

사용할 메소드만 나열하여 입력해주며 대표적으로 insertData 코딩을 가져왔다.

아래에서 해당 메소드에 대해 추가로 입력해줄 것이다.

 

 

CommonDAOImpl.java

위의 인터페이스를 implements로 상속받는다.

public class CommonDAOImpl implements CommonDAO{	
	private SqlMapClient sqlMap;
	
	public CommonDAOImpl() {
		this.sqlMap = SqlMapConfig.getSqlMapInstance();
	}
	
	public static CommonDAO getInstance() {
		return new CommonDAOImpl();
	}

	@Override
	public void insertData(String id, Object value) {
		
		try {			
			sqlMap.startTransaction();			
			sqlMap.insert(id, value);			
			sqlMap.commitTransaction();
			
		} catch (SQLException e) { 
			System.out.println(e.toString());
		} finally { 
			try {
				sqlMap.endTransaction(); 
			} catch (Exception e2) {}
		}		
	}

 

 

데이터를 가져올 sqlMap을 변수 선언해준다.

 

sqlMapConfig에 해당 데이터가 있기 때문에 가져오기 위해 호출한다.

getSqlMapInstance() 메소드는 클래스 메소드이기 때문에 앞에 .과 함께 입력해준다.

또한 객체 생성과 함께 CommonDAO 형태로 리턴한다.

 

insertData 메소드의 경우 '입력'이기 때문에 DML 문장으로 트랜잭션이 실행된다.

try문 내에서 트랜잭션을 직접 입력하여 시작하며 

값을 넣고 커밋을 한다.

finally문을 통해 endTransaction 트랜잭션이 무조건 종료되도록 해준다.

 

 

여기까지 iBatis 세팅에 대해 알아보았다.

 


 

3월 8일 화요일 수업 🌔

 

오늘은 세팅과 함께 struts와 iBatis를 활용하여 게시판을 만들어 보았으며

그 중 세팅 부분에 대해 글을 작성하였다!

 

 

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...