본문 바로가기

Programming/SERVER

DAY 119. MVC2 패턴 - JDBCTemplate

JDBCTemplate 

 

- 공통적인 부분을 처리하는 영역

- 중복된 코드를 줄일 수 있다.

- static import

 

 

01. JDBCTemplate.java

1) Connection 객체를 리턴하도록 로직 구현

 

2) SELECT는 상관없지만, DML문 수행은 자동으로 COMMIT = AUTO COMMIT이 활성화되어있다.

예를 들어, 비즈니스 로직을 구현할 때, 1개 테이블에 INSERT, 2개 테이블에 UPDATE를 하는 하나의 트랜잭션(하나의 논리적인 작업 단위)이 있다면, 각 단계가 끝날 때마다 COMMIT이 된다. 

 

이 때, 만약 마지막 단계에서 에러가 발생해서(UPDATE가 실패해서) ROLLBACK을 해야하는 상황에서는 이미 COMMIT 된 부분은 ROLLBACK 되지 않는다. 즉, 트랜잭션 관리하기가 어려워진다. 

 

따라서 connection에 setAutoCommit(false)로 적어서 비활성화를 시킨다.

 

3) INSERT, UPDATE 작업이 끝나면 connection.commit(); 혹은 connection.rollback(); 작업을 하면 된다. AutoCommit을 비활성화 해놨기 때문에 명시적으로 어떤 작업을 할 것인지 직접 작성하는 것이다.

비즈니스 로직 구현에 있어서 트랜잭션 작업 단위를 수월하게 다룰 수 있다.

 

public static Connection getConnection(){
	Connection connection = null;
}

public static void commit(Connection connection){

}

public static void rollback(Connection connection){

}

public static void close(Connection connection) {

}

public static void close(Statement statement) {

}

public static void close(ResultSet resultSet) {

}

 

** 같은 이름의 메소드를 가질 수 있는 이유는 매개변수의 개수가 다르거나 매개변수의 타입이 다르거나이고, 메소드 오버로딩이 되었기 때문이다.

 

02. MemberDao.java

- findMemberById() 메소드에 매개변수로 Connection connection을 추가