๋ ์ง:2025-10-23
๐ก ์์: SQL ์กฐํ ์ ์๋ฐ ์ฝ๋ ๋น๊ต
SELECT * FROM user WHERE name = ?
1๏ธโฃ ๋ณต์กํ JDBC ์ฌ์ฉ ์
// JDBC ์์
public class UserDaoJdbc {
public User findByName(String name) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User user = null;
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/hello", "user", "password");
String sql = "SELECT id, name, email, age FROM users WHERE name = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getLong("id"));
user.setName(rs.getString("name"));
user.setEmail(rs.getString("email"));
user.setAge(rs.getInt("age"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
โ ๏ธ ํฌ์ธํธ: JDBC ์ฌ์ฉ ์ ์ฝ๋๊ฐ ๊ธธ๊ณ ๋ณต์กํจ
2๏ธโฃ JPA ์ฌ์ฉ ์
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByName(String name);
}
๐ฌ JPA๋ฅผ ์ฌ์ฉํ๋ฉด SQL ์์ฑ ์์ด ์๋ฐ ์ฝ๋๋ง์ผ๋ก DB ์กฐ์ ๊ฐ๋ฅ
๐ JPA(Java Persistence API)
-์๋ฐ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ ํจ๋ฌ๋ค์ ๋ถ์ผ์น ๋ฌธ์ ํด๊ฒฐ
-SQL์ ์ง์ ์์ฑํ์ง ์๊ณ ๊ฐ์ฒด ์กฐ์์ผ๋ก DB ์์
๊ฐ๋ฅ
-ํ์คํ๋ ์ธํฐํ์ด์ค ์ ๊ณต
โ JPA ์ฌ์ฉ ์์
// ๋ฐ์ดํฐ ์ ์ฅ
userRepository.save(user);
// ํน์ ID ์กฐํ
userRepository.findById(userId);
๊ด๊ณ ์ ๋ฆฌ
| ์ฉ์ด | ์ค๋ช |
|---|---|
| JDBC | ์๋ฐ์ DB๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ณธ ํต์ ๊ธฐ์ (API) |
| JPA | ORM์ ์ํ ์ธํฐํ์ด์ค, ์ค๊ณ ๊ท์น ์ ๊ณต |
| Hibernate | JPA ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ค์ ๊ตฌํ์ฒด (๋ด๋ถ์ ์ผ๋ก JDBC ์ฌ์ฉ, DB ๋ฐฉ์ธ ์ง์) |
| Spring Data JPA | JPA๋ฅผ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ Spring ๊ธฐ๋ฐ ํ์ฅ |
-JPA๋ ์ค๊ณ๋
-Hibernate๋ ์ค๊ณ๋๋ฅผ ๊ตฌํํ ์ ํ
-Spring Data JPA๋ JPA๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ๋์์ฃผ๋ ๋๊ตฌ
์ ๋ฆฌ:
-์ผ๋ฐ์ ์ผ๋ก JPA๋ผ๊ณ ํ๋ฉด Spring Data JPA๋ฅผ ์๋ฏธ
-๋ง์น Spring์ด๋ผ๊ณ ํ๋ฉด Spring Boot๋ฅผ ๋ปํ๋ ๊ฒ๊ณผ ์ ์ฌ
-JDBC๋ ๋ณต์กํ์ง๋ง JPA๋ ๋จ์ํ๋ ORM ์ธํฐํ์ด์ค
-Hibernate๋ JPA์ ๊ตฌํ์ฒด
-Spring Data JPA๋ฅผ ํตํด JPA๋ฅผ ๋ ์ฝ๊ณ ํธํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
-JPA ์ฌ์ฉ ์ ๊ฐ๋ฐ์๋ SQL ์์ฑ ๋ถ๋ด ์์ด ๊ฐ์ฒด ์ค์ฌ์ผ๋ก DB ์ฒ๋ฆฌ ๊ฐ๋ฅ