postgresql
Java에서 PostgreSQL에 연결
수색…
소개
Java에서 관계형 데이터베이스를 사용하는 API는 JDBC입니다.
이 API는 JDBC 드라이버에 의해 구현됩니다.
이를 사용하려면 드라이버가있는 JAR 파일을 JAVA 클래스 경로에 놓습니다.
이 문서는 JDBC 드라이버를 사용하여 데이터베이스에 연결하는 방법을 보여주는 샘플을 보여줍니다.
비고
JDBC URL
JDBC URL은 다음 형식 중 하나를 취할 수 있습니다.
jdbc:postgresql:// host [: port ]/[ database ][ parameters ]
host
기본값은localhost
,port
는 5432입니다.
host
가 IPv6 주소 인 경우 대괄호로 묶어야합니다.
기본 데이터베이스 이름은 연결하는 사용자의 이름과 같습니다.페일 오버를 구현하기 위해 여러
host [: port ]
항목을 쉼표로 구분하여 입력 할 수 있습니다.
연결이 성공할 때까지 순서대로 시도됩니다.jdbc:postgresql: database [ parameters ]
jdbc:postgresql:/[ parameters ]
이 양식은
localhost
대한 연결 용입니다.
parameters
는 key [= value ]
쌍의 목록입니다 ( ?
&
구분됩니다. value
이 누락 된 경우 true
로 간주됩니다.
예 :
jdbc:postgresql://localhost/test?user=fred&password=secret&ssl&sslfactory=org.postgresql.ssl.NonValidatingFactory
참고 문헌
- JDBC 사양 : http://download.oracle.com/otndocs/jcp/jdbc-4_2-mrel2-eval-spec/
- PostgreSQL JDBC 드라이버 : https://jdbc.postgresql.org/
- PostgreSQL JDBC 드라이버 문서 : https://jdbc.postgresql.org/documentation/head/index.html
java.sql.DriverManager를 사용하여 연결
이것은 연결하는 가장 간단한 방법입니다.
우선, 드라이버를 java.sql.DriverManager
등록 해, 사용하는 클래스를 인식 할 필요가 있습니다.
이것은 일반적으로 java.lang.Class.forname( <driver class name> )
하여 드라이버 클래스를로드하여 수행됩니다.
/**
* Connect to a PostgreSQL database.
* @param url the JDBC URL to connect to; must start with "jdbc:postgresql:"
* @param user the username for the connection
* @param password the password for the connection
* @return a connection object for the established connection
* @throws ClassNotFoundException if the driver class cannot be found on the Java class path
* @throws java.sql.SQLException if the connection to the database fails
*/
private static java.sql.Connection connect(String url, String user, String password)
throws ClassNotFoundException, java.sql.SQLException
{
/*
* Register the PostgreSQL JDBC driver.
* This may throw a ClassNotFoundException.
*/
Class.forName("org.postgresql.Driver");
/*
* Tell the driver manager to connect to the database specified with the URL.
* This may throw an SQLException.
*/
return java.sql.DriverManager.getConnection(url, user, password);
}
그 사용자와 패스워드를 JDBC URL에 포함 할 수도 있습니다.이 경우, getConnection
메소드 호출로 지정할 필요는 없습니다.
java.sql.DriverManager와의 접속과 프로퍼티
URL 또는 별도의 매개 변수에서 사용자 및 암호와 같은 연결 매개 변수 ( 여기 전체 목록 참조 )를 지정하는 대신 java.util.Properties
객체에이를 java.util.Properties
할 수 있습니다.
/**
* Connect to a PostgreSQL database.
* @param url the JDBC URL to connect to. Must start with "jdbc:postgresql:"
* @param user the username for the connection
* @param password the password for the connection
* @return a connection object for the established connection
* @throws ClassNotFoundException if the driver class cannot be found on the Java class path
* @throws java.sql.SQLException if the connection to the database fails
*/
private static java.sql.Connection connect(String url, String user, String password)
throws ClassNotFoundException, java.sql.SQLException
{
/*
* Register the PostgreSQL JDBC driver.
* This may throw a ClassNotFoundException.
*/
Class.forName("org.postgresql.Driver");
java.util.Properties props = new java.util.Properties();
props.setProperty("user", user);
props.setProperty("password", password);
/* don't use server prepared statements */
props.setProperty("prepareThreshold", "0");
/*
* Tell the driver manager to connect to the database specified with the URL.
* This may throw an SQLException.
*/
return java.sql.DriverManager.getConnection(url, props);
}
연결 풀을 사용하여 javax.sql.DataSource와 연결
응용 프로그램 서버 컨테이너에서 JNDI와 함께 javax.sql.DataSource
를 사용하는 것이 일반적입니다.이 컨테이너에서는 이름 아래에 데이터 소스를 등록하고 연결이 필요할 때마다 찾아 봅니다.
다음은 데이터 소스의 작동 방식을 보여주는 코드입니다.
/**
* Create a data source with connection pool for PostgreSQL connections
* @param url the JDBC URL to connect to. Must start with "jdbc:postgresql:"
* @param user the username for the connection
* @param password the password for the connection
* @return a data source with the correct properties set
*/
private static javax.sql.DataSource createDataSource(String url, String user, String password)
{
/* use a data source with connection pooling */
org.postgresql.ds.PGPoolingDataSource ds = new org.postgresql.ds.PGPoolingDataSource();
ds.setUrl(url);
ds.setUser(user);
ds.setPassword(password);
/* the connection pool will have 10 to 20 connections */
ds.setInitialConnections(10);
ds.setMaxConnections(20);
/* use SSL connections without checking server certificate */
ds.setSslMode("require");
ds.setSslfactory("org.postgresql.ssl.NonValidatingFactory");
return ds;
}
이 함수를 호출하여 데이터 소스를 만들면 다음과 같이 사용할 수 있습니다.
/* get a connection from the connection pool */
java.sql.Connection conn = ds.getConnection();
/* do some work */
/* hand the connection back to the pool - it will not be closed */
conn.close();