티스토리 뷰

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
댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
최근에 올라온 글
Total
Today
Yesterday
공지사항