JDBC (Java Database Connectivity)
자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 입니다.
JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공합니다.
자바에서 데이터베이스와의 연결이 필요할 때
DriverManager.getConnection() 메소드들 중 하나를 사용하여 JDBC 연결을 만들게 됩니다.
사용된 URL은 특정 데이터베이스와 JDBC 드라이버에 의존하게 됩니다.
"jdbc:" 프로토콜로 무조건 시작하지만 나머지 부분은 특정 벤더에 따라 다릅니다.
저는 Oracle을 사용하기 때문에 오라클측에서 제공하는 드라이버 이름을 써주었습니다.
JDBC 를 이용한 Oracle 데이터베이스 연동
JDBC로 구현하는 자바 프로그램의 연동 과정은 <JDBC프로그램 - JDBC인터페이스 - JDBC드라이버 - DB> 순입니다.
코드를 먼저 보겠습니다.
코드에 대한 설명입니다.
[3]: JDBC 인터페이스는 일종의 API이므로, 제공해주는 패키지를 import해주어야 합니다. "java.sql.*"을 먼저 import해줍니다.
[5]: Connection이라는 객체를 사용하기 위해 객체 레퍼런스를 선언해줍니다.
[7]: JDBC driver를 load 해올 때 필요한 변수 설정 (변수로 안빼도 됩니다. 코드 길어지는 것을 방지하기 위해 따로 빼두었습니다)
[8]: URL도 필요합니다. 이부분도 마찬가지입니다 그냥 바로 가져다 써도됩니다.
[10]: 접속유무를 확인하기 위한 변수를 생성해주고 false 값을 주었습니다. (임의입니다)
[13]: forName이라는 메소드를 이용해 우리가 사용할 JDBC 드라이버를 로드합니다. 오라클이 인식합니다.
[14]: DriverManager이라는 객체의 getConnection 메소드를 활용해 url, user, password를 주면 이 때 Connection 객체가 비로소 생성됩니다 -> 생성이 되면 DB와 연결됩니다.
[16]: 임의로 접속성공을 표시해줍니다.
[18]: close메소드로 객체를 메모리에서 해제합니다.
[20~22]: 오류처리를 해줍니다. 오류가 뜨면 접속이 되지 않으니 실패를 확인해줍니다.
[33~34] Java tag를 이용해 connect가 true일 때, 즉 DB와 연결이 되면 홈페이지에 연결이 되었다고 표시해줍니다.
[35~36] 연결이 되지 못했다면 실패를 띄워줍니다.
+14번 추가 설명+
- String url : 접속할 서버의 URL. 프로토콜, 서버주소,서버포트, DB이름으로 구성
- String user : DB서버에 로그인할 계정
- String password : DB서버에 로그인할 비밀번호
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%
Connection conn=null;
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:XE";
Boolean connect=false;
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,"jelly","****");
connect=true;
conn.close();
}catch(Exception e){
connect=false;
e.printStackTrace();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JDBC 연동 테스트 예</title>
</head>
<body>
<h3>
<%if(connect==true){ %>
연결되었습니다.
<%}else{ %>
연결에 실패하였습니다.
<%} %>
</h3>
</body>
</html>
다만 JDBC를 이용하여 연동하는 것에는 큰 단점이 있습니다.
코드에 직접적으로 아이디와 비밀번호가 노출되기 때문에 보안에 취약하다는 점
속도가 느리다는 점이 있습니다.
이것을 해결하기 위한 방법인 Connection Pool을 활용하여 DB에 연동하는 것을 다음 글에서 알아보도록 하겠습니다.
댓글