티스토리 뷰
1. JDBC driver를 이용한 데이터베이스 프로그래밍할 때, 핵심이 되는 클래스/인터페이스 (***)
(0) java.sql.DriverManager (Class) // 드라이버 관리자
(1) java.sql.Connection (interface) // 핸드쉐이크할 틀
(2) java.sql.Statement (interface) ---> Dynamic(동적) SQL (잘 사용하면 안됨!!! -- > 성능을 떨어뜨림)
(3) java.sql.PreparedStatement (interface) --> Prepared SQL
(4) java.sql.ResultSet (interace) // 결과셋 (인터페이스 - 이렇게 와야한다.)
(5) java.sql.SQLException (class) - Checked Exception // 예외처리
* 위에서 (1) ~ (4)까지는 자원객체이기에, 다 사용하고 나면 반드시 자원해제를 해줘야 한다!!
* 이때 자원객체를 닫는 순서가 정해져 있으며, 이를 반드시 지켜야 한다. (***)
* (4) -> (2) 또는 (3) -> (1) 순으로 닫아야 한다.
[ 1. log4j2 설정 ]
package org.zerock.myapp;
import lombok.extern.log4j.Log4j2;
@Log4j2
public class App {
public static void main( String[] args ) {
log.info("Hello World! - log" );
// log를 남기기 위해서는 log4j2.xml파일이 필요하다. (**)
// 출력되는 로그의 형태를 바꾸기 위해서는 log4j2.xml파일을 vsCode에서 열어서 변경하면 된다.
System.out.println( "Hello World! - sysout" );
} // end main
} // end class
[ 1 - 1. log4j2.xml 파일 설정 ]
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="LOG_PATTERN">%d{HH:mm:ss.SSS} %5p --- [%10.50t] %-1.50c{1.}.%-1.20M:%L - %m%n%ex</Property>
</Properties>
<Appenders>
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.zerock.myapp" level="trace" />
<Root level="warn">
<AppenderRef ref="ConsoleAppender" />
</Root>
</Loggers>
</Configuration>
[ 2. JDBC를 이용해서 Target DB에 연결하기 ] (*****)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import lombok.extern.log4j.Log4j2;
@Log4j2
public class JDBCExample1 {
// ============================================================
// JDBC를 이용한 Target DB에 연결을 위한 정보를 아래와 같이 준비해야 한다!!
// (1) JDBC URL
// (2) Driver Class
// (3) ID
// (4) PassWord
// ============================================================
// (1) JDBC URL : DB Vendor마다 조금씩 다르지만, 기본틀은 표준에 의해서 정해져있다.
// final String jdbcUrl = "jdbc:<vendor명>:thin:@IP주소:포트번호/<DB이름>"; // EZCONNECT 방식
// vendor명은 회사명을 의미하는데, Oracle인지 아니면 그외인지 회사명을 작성하는 것이다.
// thin은 JDBC를 연결하는 방법이며, 그 아래에는 연결할 타겟의 정보를 작성하는 것이다.
// final String jdbcUrl = "jdbc:oracle:thin:@<네트워크별칭(TNS Alias)?TNS_ADMIN=tnsnames.ora파일의경로>"; // TNSAlias방식
// 클라우드는 TNSAlias방식만 된다. (*****)
static final String jdbcUrl = "jdbc:oracle:thin:@db00000000_high?TNS_ADMIN=C:/opt/OracleCloudWallet/ATP"; // (****)
// 환경변수 TNS_ADMIN은 삭제하는 편이 좋다. ( 전자지갑의 위치가 바뀔수 있기에 )
// ============================================================
// (2) Driver Class
static final String driverClass = "oracle.jdbc.OracleDriver";
// final String driverClass = "oracle.jdbc.driver.OracleDriver"; // OK
// ============================================================
// (3) 사용자 DB계정
static final String user = "hr";
// ============================================================
// (4) 사용자 DB 암호
static final String pass = "000000000000";
// ============================================================
public static void main(String[] args) throws ClassNotFoundException, SQLException {
log.info("user명 : " + user);
// static은 static(정적 멤버) 내에서만 사용이 가능하다.
// ============================================================
Connection conn = null;
Statement stmt = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
// import 잊지말고 주의해서 사용하자!!
// ============================================================
// 1. JDBC Driver Class를 Method Area에 Clazz 객체로 등록
// Class.forName("FQCN of the JDBC driver class");
Class.forName(driverClass); // 예외처리를 해야한다.
// Class.forName("a.b.c.OracleDriver"); // xx
// ============================================================
// 2. driverClass를 이용해서 연결시도 ( To connect to the specified Oracle Instance using driverClass )
conn = DriverManager.getConnection(jdbcUrl, user, pass); // 예외처리를 해야한다.
// Connection java.sql.DriverManager.getConnection(String url, String user, String password) throws SQLException
log.info("conn : "+ conn);
// ============================================================
// 3 ~ 4 단계 생략
// ============================================================
// 5. To close current Connection ( 연결 끊기 )
conn.close();
log.info("Connection Closed");
// + 반드시 자원을 해제해 줘야지 운영체제가 망가지지 않는다.
// ============================================================
} // end main
} // end class
728x90
'KH 정보교육원 [ Java ]' 카테고리의 다른 글
KH 82일차 - WAS (0) | 2022.06.24 |
---|---|
KH 81일차 - JDBC 2 (*****) (0) | 2022.06.23 |
KH 79일차 - 메이븐 2 (0) | 2022.06.21 |
KH 78일차 - 메이븐 (0) | 2022.06.21 |
KH 77일차 - XHR / ajax 메소드 (*****) (0) | 2022.06.18 |
댓글