์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ์ค์ํ ๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณด๊ดํ๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์ผ๋ จ์ ๊ณผ์ ์ ํตํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
- 1. ์ปค๋ฅ์ ์ฐ๊ฒฐ: ์ฃผ๋ก TCP/IP๋ฅผ ์ฌ์ฉํด์ ์ปค๋ฅ์ ์ ์ฐ๊ฒฐํ๋ค.
- 2. SQL ์ ๋ฌ: ์ฐ๊ฒฐ๋ ์ปค๋ฅ์ ์ ํตํด SQL์ DB์ ์ ๋ฌํ๋ค.
- 3. DB๋ ์ ๋ฌ๋ฐ์ SQL์ ์ํํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์ ์๋ตํ๋ค.
๋ฌธ์ ๋ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์ปค๋ฅ์ ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ, SQL์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ, ๊ฒฐ๊ณผ๋ฅผ ์๋ต๋ฐ๋ ๋ฐฉ๋ฒ์ด ๋ชจ๋ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์,
๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค, ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ ๊ฐ๋ฐ๋
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ฝ๋๋ฅผ ํจ๊ป ๋ณ๊ฒฝํด์ผํ๊ณ , ๊ทธ ๋ฐฉ๋ฒ๋ค์ ๊ณ์ํด์ ํ์ตํด์ผํ๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด JDBC (Java DataBase Connectivity)๋ผ๋ ์๋ฐ ํ์ค์ด ๋ฑ์ฅํ๊ฒ ๋๋ค.
JDBC๋ ๋ค์ 3๊ฐ์ง ๊ธฐ๋ฅ์ ํ์ค ์ธํฐํ์ด์ค๋ก ์ ์ํด์ ์ ๊ณตํ๋ค.
- java.sql.Connection - ์ฐ๊ฒฐ
- java.sql.Statement - SQL์ ๋ด์ ๋ด์ฉ
- java.sql.ResultSet - SQL ์์ฒญ ์๋ต
public Member findById(String memberId) throws SQLException {
String sql = "select * from member where member_id = ?";
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null; // executeQuery()์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
try {
con = getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, memberId);
rs = pstmt.executeQuery(); // ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋๋ executeQuery()๋ฅผ ์ฌ์ฉํ๋ค.
if (rs.next()) {
Member member = new Member();
member.setMemberId(rs.getString("member_id"));
member.setMoney(rs.getInt("money"));
return member;
} else {
throw new NoSuchElementException("member not found memberId=" + memberId);
}
} catch (SQLException e) {
log.error("db error", e);
throw e;
} finally {
close(con, pstmt, rs);
}
}
JDBC์ ๋ฑ์ฅ์ผ๋ก ๋ค์ 2๊ฐ์ง ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ด์ JDBC ํ์ค ์ธํฐํ์ด์ค์๋ง ์์กดํ๊ธฐ ๋๋ฌธ์,
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ผ๋ฉด JDBC ๊ตฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
- ๋ฐ๋ผ์ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝํด๋ ์ฌ์ฉ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์ ์งํ ์ ์๋ค.
- ๊ฐ๋ฐ์๋ JDBC ํ์ค ์ธํฐํ์ด์ค ์ฌ์ฉ๋ฒ๋ง ํ์ตํ๋ฉด ๋๋ค.
- ํ๋ฒ ๋ฐฐ์๋๋ฉด ์์ญ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋์ผํ๊ฒ ์ ์ฉํ ์ ์๋ค.
JDBC๋ 1997๋
์ ์ถ์๋ ์ ๋๋ก ์ค๋๋ ๊ธฐ์ ์ด๊ณ , ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ๋ณต์กํ๋ค.
๊ทธ๋์ ์ต๊ทผ์๋ JDBC๋ฅผ ์ง์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋, JDBC๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋ ๋ค์ํ ๊ธฐ์ ์ด ์กด์ฌํ๋ค.
- ์ฅ์
- SQL์๋ต ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด๋ก ํธ๋ฆฌํ๊ฒ ๋ณํํด์ค๋ค.
- JDBC์ ๋ฐ๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํด์ค๋ค.
- ๋จ์
- ๊ฐ๋ฐ์๊ฐ SQL์ ์ง์ ์์ฑํด์ผ ํ๋ค.
- ๋ํ ๊ธฐ์ : ์คํ๋ง JdbcTemplate, MyBatis
- ORM์ ๊ฐ์ฒด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๊ณผ ๋งคํํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
- ์ด ๊ธฐ์ ๋๋ถ์ ๊ฐ๋ฐ์๋ ๋ฐ๋ณต์ ์ธ SQL์ ์ง์ ์์ฑํ์ง ์๊ณ , ORM ๊ธฐ์ ์ด ๊ฐ๋ฐ์ ๋์ SQL์ ๋์ ์ผ๋ก ๋ง๋ค์ด ์คํํด์ค๋ค.
- ์ถ๊ฐ๋ก ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ๋ค๋ฅธ SQL์ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ ์ค๊ฐ์์ ํด๊ฒฐํด์ค๋ค.
- ๋ํ ๊ธฐ์ : JPA, ํ์ด๋ฒ๋ค์ดํธ, ์ดํด๋ฆฝ์ค๋งํฌ