JDBC
JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 자바언어와 DB를 연결한다. 자바를 이용하여 DB에 접속하고 SQL문장 실행을 가능하게 한다.
JDBC를 자세하게 이해하기 위해선 다양한 개념을 알아둬야 한다.
JDBC Driver Manager
Driver는 일반적으로 하드웨어나 소프트웨어 시스템과 다른 소프트웨어 간의 통신을 가능하게 하는 중개 소프트웨어를 의미한다. 예를 들어 MS 운영체제에 다른 회사 제품인 HP 프린터기를 연결한다고 하면 MS 운영체제는 HP 프린터기를 인식하고 사용하지 못한다. 이때 이를 가능하게 하기 위해 MS는 API를 프린터에게 보내면 HP 프린터기를 API에 대응하여 상호작용을 가능하게 하는 중개 소프트웨어를 만든다. 이를 드라이버라고 한다.
이처럼 JDBC Driver는 서로 다른 소프트웨어인 Java 애플리케이션에서 데이터베이스에 연결하고 SQL 쿼리를 실행할 수 있도록 해주는 소프트웨어 컴포넌트이다. JDBC는 Java 애플리케이션과 데이터베이스 간의 통신을 담당하며, 데이터베이스의 특정 구현에 맞게 설계되어 있다. 즉, JDBC 드라이버는 Java 애플리케이션과 데이터베이스 시스템 간의 중개자라고 생각하면 된다.
JDBC Driver Manager는 라이브러리로 등록된 DB Driver를 관리하고, DB Connection을 획득하는 역할을 한다. DriverManager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식하고, 이 드라이버들에게 순서대로 DB 접속 정보를 전달해 Connection을 획득할 수 있는지 확인한다. 적절한 드라이버를 찾아 Connection 구현체를 클라이언트에 반환한다.

JDBC 코딩 절차

0) 환경 구성
• JDBC 드라이버 설치 (https://www.oracle.com/kr/database/technologies/appdev/jdbc-downloads.html)
1) JDBC driver 등록 / 로드
Class.forName("orcle.jdbc.driver.OracleDriver");
• 애플리케이션에서 사용할 JDBC 드라이버를 로드한다.
• JDBC 4.0 이상에서는 드라이버가 자동으로 로드되지만, 이전 버전에서는 'Class.forName'메서드를 사용하여 드라이버 클래스를 명시적으로 로드한다.
2) Connection 객체 생성 / 연결 요청 및 설정
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "C##TEST", "1234");
• 'DriverManager.getConnection' 메서드를 호출하여 데이터 베이스 연결을 요청한다. 이 메서드는 다음과 같은 인수를 받는다.
- URL : 데이터베이스 서버의 위치와 데이터 베이스 이름을 포함하는 문자열
- USERNAME : 데이터베이스에 연결하기 위한 사용자 이름
- PASSWORD : 해당 사용자 이름에 대한 비밀번호
• 'DriverManager'는 등록된 드라이버 목록을 쉰회하여, 제공된 URL과 호환되는 드라이버를 찾는다.
• 적절한 드라이버가 발견되면, 드라이버를 사용하여 데이터베이스와의 연결을 설정한다.
3) Statement 객체 생성
Statement stmt = conn.createStatement();
• Connection 객체에 의해 프로그램에 리턴되는 객체에 의해 구현되는 일종의 메소드 집합 정의이다.
• Connection 클래스의 createState() 메소드를 호출하여 얻어지며 생성된 Statement 객체로 질의문장을 String 객체에 담아 인자로 전달하여 executeQuery() 메소드를 호출하여 SQL 질의를 수행한다.
4) 실행 후 결과 받기
ResultSet rset = stmt.executeQuery("SELECT * FROM MEMBER");

• next() 메소드를 통해, 선택되는 행을 선택하게 되고 행이 존재하면 true를 행이 존재하지 않으면 false를 반환한다.
• 데이터는 get()메소드를 통해 얻게된다.
부록 (* DB URL에 대한 이해를 돕는 내용)
Oracle listener
Oracle Listener는 Oracle 데이터베이스에서 클라이언트의 연결 요청을 수신하고 처리하는 네트워크 서비스이다. Oracle Listener는 Oracle 데이터베이스 서버와 클라이언트 간의 통신을 관리하고, 데이터베이스 사용자들이 네트워크를 통해 데이터베이스에 접속할 수 있게 해준다. 네트워크를 통한 연결은 모두 리스너가 담당하게 된다.
Oracle은 Listener를 수동으로 생성하지 않고 Listener 기동을 하는 경우, 1521 포트를 사용하는 Listener를 작동시킨다.
SID (System Identifier)
Oracle에서의 SID는 데이터베이스 인스턴스를 고유하게 식별하는 데 사용한다. 이는 데이터베이스 서버에서 여러 인스턴스가 운영되는 경우 각 인스턴스를 구별하는 데 필요하다. 인스턴스는 쉽게 말해서 하나의 서버 장비에 있는 여러 개의 오라클 프로세스를 의미한다. 오라클은 하나의 장비에 여러 개의 프로세스를 올릴 수 있다. 동일한 서버 내에서 여러 인스턴스가 존재한다는 의미이다. 결국 이러한 인스턴스를 구분하는 것이 SID이다.
예를 들어 1521 포트에는 orcl이라는 SID로 인스턴스를 실행하고 1522 포트에는 orcldev라는 SID로 인스턴스를 실행할 수 있는 것이다. 그럼 애플리케이션이 JDBC연결을 할 때 같은 서버 장비를 바라보고 1521 포트로 연결할 수도 있고 1522 포트로도 연결할 수 있다.
xe는 Oracle Database Express Edition를 의미하고 xe는 Oracle Database의 경량 버전으로 주로 학습과 소규모 개발 프로젝트에서 사용된다. 여기서 이름을 따와 임시로 지정한 이름이다.
orcl은 역시 샘플로 자주 사용되는 이름이라고 한다.