8-1. iBatis

zhyun·2020년 10월 7일
0

HighJava

목록 보기
55/67
post-custom-banner

<2020.10.08 목요일>

  • 9.iBatisTest폴더에 8.SingletonTest src 복사
  • kr.or.ddit.util src에 SqlMapClientFactory.java 를 싱글톤으로 구현
    => 여러다오에서 사용하려고 (ibatis객체 1개로)

<2020.10.07>

프레임워크 iBatis

: DB자료 처리
: buildpath (ibatis-2.3.4.726.jar, ojdbc6.jar) 경로지정
: resuorce 폴더 생성 => SqlMapConfig.properties

  1. javaproject : 9.iBatisTest
  • src :
    • kr.or.ddit.basic >> MemberIbatisTest.java
    • kr.or.ddit.member.vo >> MemberVO.java
  • res :
    • kr.or.ddit.sqlmap >> member.xml
  • SqlMapConfig.properties
  • SqlMapConfig.xml
  • Referenced Libraries >> ibatis-2.3.4.726.jar, ojdbc6.jar

1.SqlMapConfig.xml

  • DB와 연결하는 정보를 properties파일에 설정해 놓고 이 properties파일의
    내용을 읽어와 설정한다.
    • <properties resource="SqlMapconfig.properties"
  • ibatis를 처리하기 위한 환경설정 부분
    • useStatementNamespaces = "true" 부분 중요
<settings cacheModelsEnabled="true" enhancementEnabled="true"
		lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
		maxTransactions="5" useStatementNamespaces="true" />
  • 각종 설정을 직접 기술해서 처리할 수도 있다.
<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}" />
		</dataSource>
	</transactionManager>
  • 실제 처리할 SQL문은 xml문서로 따로 만든 후 그 xml문서와 아래와 같이 연결하여
    사용한다.
    • 형식) <sqlMap resource = "경로명/파일명.xml"/>
	<sqlMap resource="kr/or/ddit/sqlmap/member.xml"/>
</sqlMapConfig>

2.일반.xml (예시 : member.xml)

  • namespace 속성 : 아래에서 작성한 SQL작성을 호출할 때 같이 사용된다.
    <sqlMap namespace="memberTest"
  • 사용할 수 있는 기본적인 태그들
    • <select>~~~</select>
    • <insert>~~~</insert>
    • <update>~~~</update>
    • <delete>~~~</delete>
  • 위 태그에서 사용되는 속성들
    • id 속성 : 해당 태그를 호출할 때 태그의 namespace와 연결하여 사용하는 이름
    • parameterClass 속성
      : sql문에서 사용될 데이터가 들어있는 객체를 지정한다.
      : 보통 VO클래스, 자바의 자료형 이름등이 사용된다.
      : typeAlias로 지정한 alias명을 사용할 수 있다.
    • resultClass 속성
      : select문을 실행한 결과를 담은 객체를 지정한다.
      : 보통 VO클래스자바의 자료형 이름을 사용한다.

3. ibatis 활용한 CRUD

  • ibatis 사용할 준비단계
try {
	//1-1. xml문서 읽어오기
	Charset charset = Charset.forName("UTF-8"); //설정파일의 인코딩 설정
	Resources.setCharset(charset);
	Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml"); //xml파일 읽는 Reader객체를 리턴
			
	//1-2. 위에서 읽어온 Reader객체를 이용하여 실제 작업을 진행할 객체 생성
	SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);
	rd.close(); 	
catch(IOException ex) {
		ex.printStackTrace();
	}catch(SQLException ex) { //쿼리 끝났을 때 발생
		ex.printStackTrace();
	}
}  
  • ② 1번 부분 SqlMapClient 객체를 제공하는 부분을 다른 클래스로 빼서 싱글톤 패턴으로 해준다.
    예시 NoticeBoard_iBatis / SqlMapClientFactory.java

  • CRUD

    • insert
      : SqlMapClient객체 변수를 이용하여 쿼리문 실행
      : SqlMapClient객체 smc.insert("namespace값.id값",파라미터객체);
      : 반환값 => 성공하면 null이 반환된다.
    • select
      • 결과가 여러개일 경우
        : queryForList()메서드 사용
        : 여러개의 레코드를 VO에 담은 후 이 VO데이터를 List에 추가해주는 작업을 자동으로 수행
      • 결과가 1개인 경우
        : queryForObject()메서드 사용
        : 응답 결과가 1개가 확실할 경우에 사용
    • update
      : update()메서드의 반환값은 성공한 레코드 수이다.
    • delete
      : delete()메서드의 반환값은 성공한 레코드 수이다.
profile
HI :)
post-custom-banner

0개의 댓글