오늘은 Java에서 데이터베이스를 다루는 핵심 기술인 JDBC(Java Database Connectivity)와 Oracle 데이터베이스 연결을 위한 OJDBC 드라이버, 그리고 Statement / PreparedStatement를 활용한 SQL 실행 방법까지 정리했습니다.
📌 JDBC란?
Java에서 DB에 접근할 수 있게 해주는 API입니다.
다양한 DBMS(Oracle, MySQL 등)와 연동 가능
SQL 실행 및 결과 처리 기능 제공
🔗 OJDBC란?
Oracle JDBC Driver의 약자로, Java와 Oracle DB를 연결해주는 라이브러리입니다.
Maven Repository에서 다운로드 가능
👉 https://mvnrepository.com/
Java Project > Properties > Libraries에서 등록
⚙ JDBC 핵심 객체
객체 역할
DriverManager 드라이버 로드 및 DB 연결
Connection DB 연결 객체
Statement 정적인 SQL 실행
PreparedStatement 동적인 SQL 실행 (보안, 성능 ↑)
ResultSet SELECT 결과 저장 및 순회
✅ 기본 사용 흐름
드라이버 로드
java
복사
편집
Class.forName("oracle.jdbc.driver.OracleDriver");
DB 연결 (Connection 생성)
java
복사
편집
String url = "jdbc:oracle:thin:@localhost:1521:XE";
Connection conn = DriverManager.getConnection(url, "kh", "kh1234");
SQL 실행
Statement 또는 PreparedStatement 사용
자원 반환
java
복사
편집
rs.close(); stmt.close(); conn.close();
🧾 Statement 예제 (정적 SQL)
java
복사
편집
String sql = "SELECT EMP_ID, EMP_NAME FROM EMPLOYEE";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.println("사번: " + rs.getString("EMP_ID"));
System.out.println("이름: " + rs.getString("EMP_NAME"));
}
보안 이슈 있음 (SQL Injection)
매개변수 직접 포함 불가
🛡 PreparedStatement 예제 (동적 SQL + 보안 강화)
java
복사
편집
String sql = "INSERT INTO TB_USER VALUES(SEQ_USER_NO.NEXTVAL, ?, ?, ?, DEFAULT)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "user01");
pstmt.setString(2, "pass1234");
pstmt.setString(3, "홍길동");
int result = pstmt.executeUpdate();
if(result > 0) conn.commit(); else conn.rollback();
?로 위치 홀더 사용 → 값 바인딩
SQL Injection 방지 가능
반복 실행에도 성능 ↑
🔁 ResultSet 순회
java
복사
편집
while (rs.next()) {
String name = rs.getString("EMP_NAME");
int salary = rs.getInt("SALARY");
Date hireDate = rs.getDate("HIRE_DATE");
}
next()로 한 줄씩 이동
get자료형(컬럼명)으로 데이터 추출
💡 JDBC 트랜잭션 처리
java
복사
편집
conn.setAutoCommit(false); // 자동 커밋 해제
try {
pstmt.executeUpdate();
conn.commit();
} catch(Exception e) {
conn.rollback();
}
🧪 기타 예제 (조인, 조건 검색 등)
조건 검색: WHERE, BETWEEN, LIKE
조인 쿼리: JOIN문 활용
사용자 입력값 Scanner로 받아 처리 가능
✅ 오늘의 요약
개념 요약
JDBC 자바와 DB 연결하는 API
OJDBC Oracle용 JDBC 드라이버
Statement 정적 SQL 실행 (보안 X)
PreparedStatement 동적 SQL 실행 (보안 O)
ResultSet SELECT 결과 처리
트랜잭션 commit, rollback으로 제어
JDBC는 실무에서도 매우 많이 사용되는 기술입니다. Statement vs PreparedStatement의 차이와 사용법을 확실히 익혀두면 Spring JDBC / MyBatis / JPA로 넘어갈 때도 수월해질 거예요! 💪