1. 등장배경
웹 서비스나 모바일 어플을 사용하면 각 서비스들이 사용자의 데이터를 알고있다.
이 데이터는 일반적으로 데이터베이스에 저장돼서 조회하여 보여준다.
그런데 이러한 데이터베이스는 종류가 많다.
Oracle, MySQL, PostgreSQL 등 다양하다.
이 데이터베이스에 접근하기 위한 연결 방법 또한 각양각색이다. 데이터베이스 접속방법을 추상화한 인터페이스가 JDBC 이다.
2. DB 커넥션
public static Connection getConnection() {
try {
Connection connection = DriverManager.getConnection(
jdbc:mysql://ip:port/schema,
USERNAME,
PASSWORD);
return connection;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
위 코드와 같이 java.sql 에 있는 DriverManager 클래스에 있는 메소드를 사용합니다. 그러면 커넥션을 얻을 수 있고 이 커넥션을 통해 여러 쿼리를 만들 수 있습니다.
@CallerSensitive
public static Connection getConnection(String url,
String user, String password) throws SQLException {
java.util.Properties info = new java.util.Properties();
if (user != null) {
info.put("user", user);
}
if (password != null) {
info.put("password", password);
}
return (getConnection(url, info, Reflection.getCallerClass()));
}
DriverMager 클래스에 있는 getConnection 메소드의 구체적인 코드입니다. 이걸 사용하면 됩니다. 파라미터는 url, user ,password 이 세가지를 받습니다.
3. DB 조회
public Member findById(String memberId) throws SQLException {
String sql = "select * from member where member_id = ?";
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
con = getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberId);
rs = pstmt.executeQuery();
if (rs.next()) {
Member member = new Member();
member.setMemberId(rs.getString("member_id"));
member.setUsername(rs.getInt("username"));
return member;
} else {
throw new NoSuchElementException("member not found memberId=" + memberId);
}
} catch (SQLException e) {
log.error("db error", e);
throw e;
} finally {
JdbcUtils.closeResultSet(rs);
JdbcUtils.closeStatement(stmt);
JdbcUtils.closeConnection(con);
}
}
getConnection 으로 connection 을 받고 DB 쿼리를 날리고 사용이 끝나면 자원정리를 한다.
finally 로 ResultSet, Statemane, Connection 을 닫으면 된다.
'spring > database access' 카테고리의 다른 글
| #0 intro (0) | 2025.04.13 |
|---|