연결 MySQL 및 JDBC를 설정하는 가장 좋은 방법/템플릿은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/819845

  •  03-07-2019
  •  | 
  •  

문제

MySQL의 JDBC와의 연결을 설정하는 가장 좋은 방법은 무엇입니까? 간단한 진술을 실행합니다. 그렇게하는 방법? 고맙습니다.

도움이 되었습니까?

해결책

MySQL/JDBC의 기본 보일러 플레이트는 다음과 같습니다.

연결을 얻으십시오:

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");

진술을 실행하십시오:

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

진술과 연결을 닫습니다:

rs.close();
stmt.close();
conn.close();

드라이버가 설치 및/또는 클래스 경로에 있는지 확인하면됩니다.

다른 팁

이것은 21 세기입니다. JPA (ORM) 구현을 사용하십시오. 그러나 금속으로 돌아가야한다고 주장한다면 (축소의 위험에 처해) -

일부 드라이버로부터 JDBC 연결을 얻는 방법에는 여러 가지가 있습니다. 유선 클래스 이름으로 반사를 사용하는 것이 가장 흔하고 아마도 가장 뇌 손상입니다. 클래스 이름을 하드 와이어로 사용하는 경우 일반 코드의 이점을 얻을 수있을뿐만 아니라 (컴파일러가 오타를 잡고, 다루기위한 외부 예외가없고, 읽기 쉬운, 명시 적 의존성, 더 나은 도구 지원 등)를 얻을 수 있습니다.

또한 자원을 안전하게 정리하는 습관에 도달하십시오.

그래서:

public static void main(String[] args) throws SQLException {
     Driver driver = new com.mysql.jdbc.Driver();
     Connection connection = driver.connect(
         "jdbc:mysql://mydatabase", 
         new java.util.Properties() {{
              put("user", "fred");
         }}
     );
     try {
         PreparedStatement statement = connection.prepareStatement(
             "SELECT insideLeg FROM user WHERE name=?"
         );
         try {
             statement.setString(1, "jim");
             ResultSet results = statement.executeQuery();
             try {
                 if (results.next() {
                     System.out.println("= "+results.getLong(1));
                 } else {
                     System.out.println("Missing.");
                 } 
             } finally {
                 results.close();
             }
         } finally {
             statement.close();
         }
     } finally {
         connection.close();
     }
}

얼마나 엉망이야! 그리고 아직 거래조차 사용하지 않습니다. 예, ORM을 사용하십시오. 그들은 요즘 매우 존경받을 만합니다.

당신은 모든 진술에 대해 모든 것을 할 필요가 없습니다. 당신은 매번 인스턴스베이터 드라이버를 만들고 싶지 않습니다. 특히 관용구 주변의 실행은 유용합니다.

그것은 당신의 사건에 따라 다릅니다.

독립형 애플리케이션에서 일부 쿼리를 실행 해야하는 경우 다음과 같은 단일 연결을 사용해야합니다.

Class.forName ("yourDriverName");

Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
  doSmth ();
} 
rs.close ();
st.close ();
cn.close ();

그러나 실제 애플리케이션 (특별히 웹 응용 프로그램)을 개발하는 경우 DataSource를 사용하십시오. DB 및 웹 서버의 설명서를 읽으십시오. 데이터 소스를 구성하는 방법. DataSource를 사용하면 Connection -Pooling을 사용할 수 있습니다. 성능을 향상시키는 것이 좋습니다.

데이터 소스 구성은 어려운 프로세스가 아닙니다.

다음은 태양 문서입니다 JDBC 연결 생성. 거기에서 쉽게 명세서 개체에 액세스하십시오 간단한 SQL을 실행하십시오.

생산 수준 시스템의 경우 아마도 연결 풀.

Spring Framework의 JDBC 추상화 프레임 워크 사용 - 컨텍스트 XML 파일을 작성하고 JDBC 템플릿 클래스를 사용하기 만하면됩니다. 몇 줄의 XML + Java 코드만으로도 당신이 갈 수 있습니다. 장점은 연결 세부 사항을 컴파일 된 Java에서 유지하는 것입니다. 보다:http://www.springbyexample.org/examples/simple-spring-jdbc-template.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top