[MyBatis] 1. JDBC 코드의 대안 마이바티스

KIM KYUBIN·2022년 10월 12일
0

MyBatis

목록 보기
1/3

마이바티스 프로그래밍 - 이동국 저

1.1 전통적인 JDBC 프로그래밍

  • 댓글을 조회하는 JDBC 코드
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
	// 1 시작
	Class.forName("com.mysql.jdbc.Driver").newInstance();

	conn = DriverManager.getConnection(
			"jdbc:mysql://localhost:3306/mybatis", "mybatis",
			"mybatis");
	String sql = "SELECT comment_no, user_id, comment_content, " +
			"reg_date FROM comment";
	// 1 끝
	// 2 시작
	stmt = conn.prepareStatement(sql);
	rs = stmt.executeQuery();
	// 2 끝

	List<Comment> comments = new ArrayList<>();
	while (rs.next()) {
		// 3 시작
		Comment comment = new Comment();
		comment.setCommentNo(rs.getLong("comment_no"));
		comment.setUserId(rs.getString("user_id"));
		comment.setCommentContent(rs.getString("comment_content"));
		comment.setRegDate(rs.getDate("reg_date"));

		comments.add(comment);
		// 3 끝
	}
} catch (Exception e) {
	e.printStackTrace();
} finally {
	// 4 시작
	try {
		rs.close();
	} catch (SQLException e) {}
	try {
		stmt.close();
	} catch (SQLException e) {}
	try {
		conn.close();
	} catch (SQLException e) {}
	// 4 끝
}

1️⃣ 데이터베이스 자원 설정

  • Connection : 데이터베이스의 연결 정보를 갖는 객체

  • PreparedStatment : SQL을 갖는 구문 객체

  • 연결할 때마다 매번 해줘야 한다.

2️⃣ SQL 실행

  • executeQuery() : 조회 결과를 가진 ResultSet 객체 반환

3️⃣ 조회 결과 설정

  • 조회한 결과 데이터를 모델 객체에 설정하는 과정을 일일이 거친다.

4️⃣ 데이터베이스 자원 해제

  • 데이터베이스 연결과 같은 자원은 한정된 수만 가질 수 있다.

  • 매번 해줘야 하기 때문에 번거롭다.


1.2 마이바티스란 무엇인가?

  • MyBatis : 객체지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 할 수 있게 도와주는 개발 프레임워크

  • 잘게 나눠져 있는 JDBC에 비해 여러 개의 메소드 호출을 더 적은 수의 메소드 호출로 처리할 수 있는 API 제공

  • 여러 줄에 걸친 SQL을 쉽게 작성하기 위해 SQL자바 코드에 정의하기보다는 XML에 정의해서 보기에도 편하고 수정할 때도 편하다.

1.2.1 마이바티스 프로젝트

  • 코어 프레임워크 : JDBC를 단순화하고 SQLXML에 정의하게 해주는 가장 큰 부분

  • 마이바티스 제너레이터 : 테이블별로 SQL자바 모델 클래스를 자동으로 만들어준다.

  • 스키마 마이그레이션 : 데이터베이스가 변경되면 그에 맞게 마이바티스 관련 파일을 변경해주는 도구


1.3 마이바티스 구조

  • 설정 파일(mybatis-config.xml) : 데이터베이스 설정과 트랜잭션 등 마이바티스가 동작하는 규칙을 정의

  • 매퍼 : SQLXML에 정의한 매퍼 XML 파일과 SQL을 인터페이스의 메소드의 마다 애노테이션으로 정의한 매퍼 인터페이스를 의미

  • 결과 매핑과 매핑 구문 : 조회 결과를 자바 객체에 설정하는 규칙을 나타내는 결과 매핑과 SQLXML에 정의한 매핑 구문

  • 지원하는 파라미터 타입 : Map 객체, 자바 모델 클래스, 원시 타입

  • 지원하는 결과 타입 : Map 객체, 자바 모델 클래스, 원시 타입

profile
상상을 현실로 만들기 위해 노력하는 개발자

0개의 댓글