Enterprise 중급

장황한 JDBC 보일러플레이트를 JPA의 객체-관계 매핑으로 대체합니다.

✕ Java EE
String sql = "SELECT * FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
     PreparedStatement ps =
             con.prepareStatement(sql)) {
    ps.setLong(1, id);
    ResultSet rs = ps.executeQuery();
    if (rs.next()) {
        User u = new User();
        u.setId(rs.getLong("id"));
        u.setName(rs.getString("name"));
    }
}
✓ Jakarta EE 8+
@PersistenceContext
EntityManager em;

public User findUser(Long id) {
    return em.find(User.class, id);
}

public List<User> findByName(String name) {
    return em.createQuery(
        "SELECT u FROM User u WHERE u.name = :name",
        User.class)
        .setParameter("name", name)
        .getResultList();
}
이 코드에 문제가 있나요? 알려주세요.
🗺️

객체 매핑

엔티티는 일반 어노테이션된 클래스입니다 — 수동 ResultSet-to-object 변환이 없습니다.

🔒

타입 안전 쿼리

JPQL은 원시 테이블과 열 문자열이 아닌 엔티티 타입과 필드에서 작동합니다.

내장 캐싱

1차 및 2차 캐시가 자동으로 데이터베이스 왕복을 줄입니다.

이전 방식
JDBC
모던 방식
JPA EntityManager
JDK 버전
11
난이도
중급
JDBC 대 JPA
사용 가능

Jakarta EE 8 / Java 11 이후 널리 사용 가능

JPA(Jakarta Persistence API)는 Java 객체를 데이터베이스 행에 매핑하여 수동 ResultSet-to-object 변환을 제거합니다. JPQL 또는 Criteria API로 타입 안전 쿼리를 제공합니다.

공유 𝕏 🦋 in