집 >데이터 베이스 >MySQL 튜토리얼 >JDBC를 사용하여 Postgres 또는 H2 데이터베이스에 Java `java.time` 객체를 효율적으로 삽입하고 검색하려면 어떻게 해야 합니까?
JDBC를 효율적으로 사용하여 Java를 운영합니다. java.time
객체는 PostgreSQL 또는 H2 데이터베이스와 상호 작용합니다
이 기사에서는 JDBC를 효율적으로 사용하여 PostgreSQL 또는 H2 데이터베이스에서 java.time
와 같은 Java LocalDate
객체를 삽입하고 검색하는 방법을 살펴봅니다.
기존 방법: PreparedStatement::setDate
및 ResultSet::getDate
기존 접근 방식은 java.sql.Date
및 PreparedStatement::setDate
을 사용하여 작업하는 오래된 ResultSet::getDate
유형에 의존합니다. 그러나 이러한 문제를 방지하려면 현대적인 방법이 권장됩니다.
현대적인 접근 방식: java.time
유형
JDBC 4.2 이상과 호환되는 드라이버
가장 효과적인 방법은 JDBC 4.2 이상과 호환되는 드라이버를 사용하는 것입니다. 이러한 드라이버는 유형 변환 없이 java.time
개체를 직접 지원합니다.
데이터 삽입: PreparedStatement::setObject(1, myLocalDate)
을 사용합니다. 여기서 myLocalDate
는 LocalDate
개체 인스턴스입니다. 드라이버는 자동으로 적절한 SQL 유형을 감지하고 변환합니다.
데이터 검색: ResultSet::getObject("my_date_column_", LocalDate.class)
을 사용하여 LocalDate
개체를 검색합니다. 예상되는 클래스를 지정하면 유형 안전성이 보장됩니다.
레거시 드라이버(JDBC 4.2 이하)
JDBC 4.2 이상과 호환되지 않는 드라이버의 경우 임시로 java.time
개체를 해당 java.sql
유형으로 또는 그 반대로 변환해야 합니다.
java.sql.Date.valueOf(myLocalDate)
을 사용하여 LocalDate
를 java.sql.Date
로 변환하세요.
데이터 삽입: preparedStatement.setDate(1, java.sql.Date.valueOf(myLocalDate))
을 사용하세요.
데이터 검색: rs.getDate(1)
을 사용하여 java.sql.Date
개체를 가져온 다음 sqlDate.toLocalDate()
을 사용하여 LocalDate
로 변환합니다.
JDBC 4.2 호환 드라이버를 사용한 샘플 코드
<code class="language-java">import java.sql.*; import java.time.LocalDate; import java.time.ZoneId; import java.util.UUID; public class App { public static void main(String[] args) { try { Class.forName("org.h2.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try ( Connection conn = DriverManager.getConnection("jdbc:h2:mem:trash_me_db_"); Statement stmt = conn.createStatement(); ) { String tableName = "test_"; String sql = "CREATE TABLE " + tableName + " (" + "id_ UUID DEFAULT random_uuid() PRIMARY KEY ," + "date_ DATE NOT NULL" + ");"; stmt.execute(sql); sql = "INSERT INTO test_ (date_) VALUES (?) ;"; try (PreparedStatement preparedStatement = conn.prepareStatement(sql);) { LocalDate today = LocalDate.now(ZoneId.of("America/Montreal")); preparedStatement.setObject(1, today.minusDays(1)); preparedStatement.executeUpdate(); preparedStatement.setObject(1, today); preparedStatement.executeUpdate(); preparedStatement.setObject(1, today.plusDays(1)); preparedStatement.executeUpdate(); } sql = "SELECT * FROM test_"; try (ResultSet rs = stmt.executeQuery(sql);) { while (rs.next()) { UUID id = rs.getObject("id_", UUID.class); LocalDate localDate = rs.getObject("date_", LocalDate.class); System.out.println("id_: " + id + " | date_: " + localDate); } } } catch (SQLException e) { e.printStackTrace(); } } }</code>
실행 결과는 다음과 유사합니다.
<code>id_: e856a305-41a1-45fa-ab69-cfa676285461 | date_: 2017-03-26 id_: a4474e79-3e1f-4395-bbba-044423b37b9f | date_: 2017-03-27 id_: 5d47bc3d-ebfa-43ab-bbc2-7bb2313b33b0 | date_: 2017-03-28</code>
이전 버전의 드라이버를 사용한 샘플 코드 (원본 코드와 동일하며 여기서 반복하지 않습니다.)
올바른 JDBC 드라이버를 선택하고 적절한 방법을 사용하면 데이터베이스와 효율적이고 유형이 안전한 상호 작용을 보장할 수 있습니다. 코드를 단순화하고 효율성을 높이려면 JDBC 4.2 이상과 호환되는 드라이버를 우선적으로 사용하는 것을 잊지 마세요.
위 내용은 JDBC를 사용하여 Postgres 또는 H2 데이터베이스에 Java `java.time` 객체를 효율적으로 삽입하고 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!