[ibatis] 개발환경 구축

이수보🧑🏻‍💻·2022년 2월 8일
0

기타

목록 보기
4/12
post-thumbnail

ibatis

ibatis란 데이터베이스에 있는 자원들을 보다 편리하게 가져오고 관리하기 위한 프레임워크이다.

ibatis 는 JDBC보다 코드의 양을 약 40% 줄일 수 있고 또한 JDBC와는 다르게 SQL문장과 프로그래밍 코드의 분리로 인해 가독성,유지보수성,생산성 등을 향상시킨다.

ibatis Data Mapper
ibatis는 Data Mapper를 통해 자바빈즈(음.. 쉽게말해 VO) 객체를 쉽게 PreparedStatement의 파라미터 설정과 ResultSets으로 쉽게 매핑할 수 있게 도와준다.

환경 구축

1. 설치
https://mvnrepository.com/artifact/org.apache.ibatis/ibatis-sqlmap
maven repository에 접속하여 원하는 ibatis 버젼을 다운로드 받는다.
필자는 2.3.4.7 버젼을 사용하였다.

사진처럼 jar 파일로 다운을 받았다면 압축을 풀지 말고 바로 자바 프로젝트로 아래 사진과 같이 돌아가 빌드패스 해준다.

이제 DB연결과 필요한 작업을 해줄 차례이다.

위 사진과 같은 파일들이 필요하다.

  • 2. DB연결 정보 저장
    dbinfo.properties에 DB 연결에 필요한 정보들을 저장하고 그 정보를 이용하여 sqlMapConfig.xml 파일에서 연결한다.
  • 3. DB연결 및 SQL 작업을 위한 처리
    연결에 필요한 속성을 저장하고
    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>

	DB와 연결정보를 properties파일에 설정해 놓고 
	이 properties파일의 내용을 읽어올 수 있도록 설정한다.
	<properties resource="kr/or/ddit/config/dbinfo.properties"/>

	자바에서 Query를 실행할 때 편하게 하려면 nameSpace사용을 true로 설정해야 한다. 
    그렇지 않으면 항상 mapper파일의 경로를 작성해 주어야 한다.
	<settings useStatementNamespaces="true"/>

	형식) <typeAlias alias="alias명" type="클래스의 풀네임"/>
	  이 경로에 클래스객체를 이 이름으로 쉽게 사용하겠다는 뜻!! alias를 지정X 하면 항상 경로를 써워야 한다.
	  <typeAlias alias="testVo" type="kr.or.ddit.board.vo.TestVo"/>
	  
	  DB와의 연결을 처리하는 부분 
	  <transactionManager type="JDBC">
	  	  <dataSource type="SIMPLE">
	  	  	  <property name="JDBC.Driver" value="${driver}"/>
	  	  	  <property name="JDBC.ConnectionURL" value="${url}"/>
	  	  	  <property name="JDBC.Username" value="${user}"/>
	  	  	  <property name="JDBC.Password" value="${pass}"/>
	  	  </dataSource>
	  </transactionManager>
	  
	실행할 SQL문 등록하기(실행할 SQL파일은 따로 mapper파일로 지정하여 사용한다.)
	<sqlMap resource="kr/or/ddit/ibatis/mapper/Test.xml"/>
	
  </sqlMapConfig>

3. 쿼리작성 및 사용을 위한 SQL mapper파일 생성

<?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 namespace = "ibatis"> //sqlMapConfig.xml에서 useStatementNamespaces를 true로 설정해야 사용가능
	
	각각 태그들이 존재 resultClass, parameterClass는 생략이 가능한 경우 해도 되지만 태그ID는 필수!!!!
      SELECT : <select id="" parameterClass="" resultClass="">Query</select>
      INSERT : <insert id="" parameterClass="" resultClass="">Query</insert>
      DELETE : <delete id="" parameterClass="" resultClass="">Query</delete>
      UPDATE : <update id="" parameterClass="" resultClass="">Query</update>
	
	
	</sqlMap>

4. 사용하기

자바에서 사용하기 위해선 xml 파일을 가져와 연결해야 한다. 하지만 매번 해주기 귀찮으니 싱글톤패턴으로 사용한다.

	private static SqlMapClient smc;
	
	// 가장 먼저 실행되어야 하고 그 후 객체를 딱 한번만 만들어야 하기 때문에 static 초기화 블럭을 사용
	static {
		
		Reader rd = null;
		try {
			
			 Charset charset = Charset.forName("UTF-8");
			 Resources.setCharset(charset);
			 
			 rd = Resources.getResourceAsReader("kr/or/ddit/config/sqlMapConfig.xml");
			 
			 smc = SqlMapClientBuilder.buildSqlMapClient(rd);
			 
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(rd != null)try {rd.close();}catch(IOException e){ }
		}
		
	}
	
	xml 파일을 읽어와 정보를 저장한 smc를 반환 해주는 메소드를 만들어 사용한다.
	public static SqlMapClient getSqlMapClient() {
		return smc;
	}

이제 정말 모든 설정이 끝났고 사용할 차례.

방금 위에서 만든 SqlMapClientFactory클래스의 getSqlMapClient()를 사용하여 객체를 얻어온다.

	private SqlMapClient smc = SqlMapClientFactory.getSqlMapClient();

예를 들어 update를 실행한다면 반환값은 int 이다. (영향받은 행의 개수)

	int result = smc.update("nameSapce명.태그ID", 파라미터);

ibatis 환경 구축 끝....~~

0개의 댓글