Mybatis - ORM 솔루션

이진아·2020년 5월 4일
0
post-thumbnail

1. Mybatis

ORM solution
: Query, Connection, Transaction 처리 등을 Framwork가 대신 처리하여 Business Logic에 집중할 수 있게 해준다.

: 마이바티스는 JDBC로 처리하는 상당부분의 코드와 수동적인 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다(출처:https://mybatis.org/mybatis-3/ko/index.html).

Ex) Mybatis vs JDBC


2. 의존성 주입(Dependency Injection)

Configuration.xml 파일에 의존하여 SqlSessionFactory 객체 주입

  • Configuration.xml

    • UNPOOLED
      : 요청 마다 커넥션을 열고 닫는 간단한 DataSource이다. 5개의 properities가 설정된다.
      ① driver: jdbc 드라이버의 경로
      ② url: jdbc url
      ③ username
      ④ password
      ⑤ defaultTransactionIsolationLevel

    • POOLED
      : DataSource에 풀링이 적용된 JDBC 커넥션을 위한 구현체이다. Connection 인스턴스를 생성하기 위해 매번 초기화하는 것을 피하게 해준다.
      ① poolMaximumActiveConnections: 활성화된 최대 커낵션 수, 디폴트 10
      ② poolMaximumIdleConnetion: 유휴 상태에서 최대 커넥션 수
      ③ poolMaximumCheckoutTime: 최대 커넥션 시간, 디폴트 20초
      ④ poolPingEnabled: 커넥션 ping 테스트 여부 (ex) true
      ⑤ poolPingQuery: 커넥션 ping 테스트 쿼리, 디폴트 "핑쿼리 없음" (ex) selct 1
      ⑥ poolPingConnectionsNotUsedFor: ping 쿼리가 얼마나 자주 사용될 지 설정, 디폴트 0
      ⑦ poolTimeToWait: 사용된 커넥션을 기다리는 시간, 디폴트 20초

  • emp.xml

    • 다중 삭제 dml
      : delete from 테이블명 where 컬럼명 in (값, 값, 값... )

3. Mybatis와 연동된 Dao.java 코드

표준 db 연동보다 상당부분 그 코드의 양이 줄어있음을 알 수 있다.

※ SqlSessionFactory는 application scope...
: 싱글톤 혹은 싱글톤 static으로 관리해 주어야 한다.

[SqlSessionFactory를 싱클톤 static으로 관리하는 MybatisConnectMgr 클래스]

[결과] 줄어든 db연동 코드


0개의 댓글