마이바티스 프로그래밍 - 이동국 저
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️⃣ 데이터베이스 자원 해제
데이터베이스 연결과 같은 자원은 한정된 수만 가질 수 있다.
매번 해줘야 하기 때문에 번거롭다.
MyBatis
: 객체지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 할 수 있게 도와주는 개발 프레임워크
잘게 나눠져 있는 JDBC
에 비해 여러 개의 메소드 호출을 더 적은 수의 메소드 호출로 처리할 수 있는 API 제공
여러 줄에 걸친 SQL
을 쉽게 작성하기 위해 SQL
을 자바
코드에 정의하기보다는 XML
에 정의해서 보기에도 편하고 수정할 때도 편하다.
코어 프레임워크 : JDBC
를 단순화하고 SQL
을 XML
에 정의하게 해주는 가장 큰 부분
마이바티스 제너레이터 : 테이블별로 SQL
과 자바
모델 클래스를 자동으로 만들어준다.
스키마 마이그레이션 : 데이터베이스가 변경되면 그에 맞게 마이바티스 관련 파일을 변경해주는 도구
설정 파일(mybatis-config.xml) : 데이터베이스 설정과 트랜잭션 등 마이바티스가 동작하는 규칙을 정의
매퍼 : SQL
을 XML
에 정의한 매퍼 XML
파일과 SQL
을 인터페이스의 메소드의 마다 애노테이션으로 정의한 매퍼 인터페이스를 의미
결과 매핑과 매핑 구문 : 조회 결과를 자바 객체에 설정하는 규칙을 나타내는 결과 매핑과 SQL
을 XML
에 정의한 매핑 구문
지원하는 파라미터 타입 : Map 객체, 자바 모델 클래스, 원시 타입
지원하는 결과 타입 : Map 객체, 자바 모델 클래스, 원시 타입