728x90
JDBC로 DB를 연결해서 DB연동 하고 있는 상태이고
반복적으로 사용되는 기능인 close와 transanction 같은 것들을 따로 Template클래스로 빼두어
import만하면 쉽게 사용할수 있게 코드가 구성되었고
db의 트랜잭션(commit & rollback)과
jdbc의 클래스 Connection, Statement, ResultSet의 close 기능 메소드를 만들었고
PreparedStatement는 Statement의 자식 클래스이기 때문에 다형성으로 인해 부모타입은 자식 객체를 다 받을 수 있으므로 해줄 필요 x
package common;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCTemplate {
// commit()
public static void commit(Connection conn) {
try {
if(conn != null && !conn.isClosed()) { // conn.isClosed()은 SQLException 필요함
conn.commit();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// rollback()
public static void rollback(Connection conn) {
try {
if(conn != null && !conn.isClosed()) { // conn.isClosed()은 SQLException 필요함
conn.rollback();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// Connection의 close처리
public static void close(Connection conn) {
try {
if(conn != null && !conn.isClosed()) { // conn.isClosed()은 SQLException 필요함
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// ResultSet의 close처리
// public static void close(ResultSet rset) {
// // close(ResultSet rset)만 적었는데 위의 close와 다르게 에러 안나는 이유
// // 답 : 오버로딩이 적용되었기 때문
// }
public static void close(ResultSet rset) {
try {
if(rset != null && !rset.isClosed()) { // conn.isClosed()은 SQLException 필요함
rset.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// Statement의 close처리
public static void close(Statement stmt) {
try {
if(stmt != null && !stmt.isClosed()) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Java-JDBC] MVC패턴 Service클래스 - 로그인 메소드 (0) | 2022.04.30 |
---|---|
[1일1코딩][Java-JDBC] 외부파일 로드용 Properties 클래스 (0) | 2022.04.29 |
[1일1코딩][bootstrap] 페이지네이션(Pagination) (0) | 2022.04.27 |
[1일1코딩][bootstrap] 템플릿 적용 + css 적용 (0) | 2022.04.26 |
[1일1코딩][bootstrap] 템플릿 적용 및 커스텀 해보기 (0) | 2022.04.25 |