본문 바로가기

기능이해

[JAVA | SPRING | MVC | CRUD] 게시물 단건조회

 

 

1. 데이터베이스 연결

 

 

Java 애플리케이션에서 데이터베이스와 상호작용하려면 JDBC(Java Database Connectivity)를 사용하거나, JPA(Java Persistence API) 또는 MyBatis와 같은 ORM(Object-Relational Mapping) 프레임워크를 사용할 수 있다. 데이터베이스 연결 과정은 보통 다음과 같이 진행된다:

  • JDBC: DriverManager.getConnection(url, user, password)을 사용하여 데이터베이스에 연결
  • JPA: EntityManager를 통해 엔티티(Entity)를 조회
  • MyBatis: SqlSession 객체를 통해 SQL 매핑 파일에서 작성한 쿼리를 실행
 

2. 쿼리 실행

단건 조회를 하기 위해서는 SQL 쿼리를 작성하여 데이터베이스에 실행 요청을 보내야 한다. 이때 SQL의 SELECT문을 사용하여 특정 조건을 만족하는 하나의 레코드를 조회한다.

 

JDBC: PreparedStatement를 사용하여 SQL을 실행할 수 있다.

String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, userId);
ResultSet rs = pstmt.executeQuery();

 

JPA: EntityManager.find() 메서드를 사용하여 특정 엔티티를 ID로 조회한다.

User user = entityManager.find(User.class, userId);

 

MyBatis: XML 매핑 파일에 작성된 SQL을 SqlSession으로 실행한다.

User user = sqlSession.selectOne("UserMapper.selectUserById", userId);

 

3. 결과 처리

쿼리를 실행한 후 반환된 데이터는 ResultSet 객체에 저장된다. 여기서 중요한 것은 ResultSet에 저장된 데이터를 Java 객체로 변환하는 작업이다.

 

JDBC: ResultSet에서 데이터를 추출한 후 직접 객체에 매핑해야 한다.

if (rs.next()) {
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setEmail(rs.getString("email"));
}

JPA

쿼리 결과는 자동으로 해당 엔티티 객체에 매핑된다. 위에서 언급한 find() 메서드를 사용하면 결과가 바로 엔티티로 변환된다.

MyBatis

SQL 매퍼에서 쿼리 결과를 Java 객체로 자동 매핑한다. 예를 들어 selectOne 메서드를 사용하면 XML 파일에 정의된 대로 결과가 매핑된 객체로 반환된다.


4. 연결 종료

JDBC: ResultSet, PreparedStatement, Connection 객체를 모두 닫아준다.

rs.close();
pstmt.close();
connection.close();

 

JPA 및 MyBatis

일반적으로 EntityManager나 SqlSession이 트랜잭션 범위 내에서 자동으로 관리되기 때문에 명시적인 종료가 필요하지 않을 수 있지만, 필요시 명시적으로 종료할 수 있다.