강좌 Course 2. Part 1. ch4 요약
인터페이스 기반의 API 설계는
- 인터페이스 역할을 하는 부모클래스 CC
- CC를 상속받아 동작을 재정의한 자식클래스 BB (내부동작 유출x)
가 있어, BB클래스의 동작방식을 몰라도 CC를 사용하여 B클래스를 동작시킬 수 있는 것을 의미한다.
이 때 객체를 사용하는 사용자와 BB 사이는 느슨하게 연결(Loose Coupling)되어 있다고 할 수 있다. 느슨하게 결합되어 있다는 것은 둘이 상호작용을 하긴 하지만 서로에 대해서는 잘 모른다는 것을 의미한다.
이 인터페이스 기반의 API 설계는 디자인 패턴 중 옵저버 패턴에 속한다.
// 예시: CC 인터페이스
public interface CC {
public void x();
public void y();
public void z();
}
// 예시: BB 클래스
public class BB implements CC{
@Override
public void x() {
System.out.println("x executed");
}
@Override
public void y() {
System.out.println("y executed");
}
@Override
public void z() {
System.out.println("z executed");
}
}
// 예시: InterfaceAPI
public class InterfaceAPI {
public static void main(String[] args) {
CC c = new BB();
c.x(); // BB의 x() "동적 바인딩"
c.y(); // BB의 y()
c.z(); // BB의 z()
}
}
이번에는 데이터베이스 측면에서 API 활용 방법을 알아본다.
DB 마다 연결하는 방법이 달라서, DB회사들은 자바의 인터페이스를 사용하여 DB 연결 API를 만들어 제공하고 있다. 벤더들이 데이터베이스 접속에 필요한 동작들을 모아 배포한 클래스들을 드라이버라고 한다.
각기 다른 DB들의 동작들을 통일할 이러한 인터페이스를 주로 Connection이라고 부른다. DB에 접속할 때 필요한 정보는
- URL: DB접속 URL(벤더들이 제공)
- Username: 사용자
- Password: 비밀번호
이다.
가상으로 DB에 연결하는 인터페이스 기반의 API를 설계해보았다. 그냥 이런 느낌이구나 하고 보고 가는 식으로...
// 예시: 자바에서 제공하는 interface
public interface Connection {
// DB 연결 동작
public void getConnection(String url, String username, String password);
// 다른 동작들도 있겠지만 생략
}
// 예시: OradleDriver
// Oradle 회사에서 만들어서 제공
public class OradleDriver implements Connection{
@Override
public void getConnection(String url, String username, String password) {
System.out.println("creating a connection to Oradle using url, username, password");
}
}
// 예시: MeSQLDriver
public class MeSQLDriver implements Connection{
@Override
public void getConnection(String url, String username, String password) {
System.out.println("Me attempting to connect to MESQL using url, username, password");
}
}
자바에서 DB와의 연결을 위한 API들은 전부 java.sql에서 import해서 쓰면 된다(Connection, Statement, ResultSet,...).
public class DataBaseConnection {
public static void main(String[] args) {
// oradle db 접속(가상)
Connection conn = new OradleDriver();
conn.getConnection("jdbc:oradle:thin:@localhost:1111:XE","admin","admin");
// mesql db 접속(가상)
conn = new MeSQLDriver();
conn.getConnection("jdbc:mesql://localhost:2222/test","root","1234");
}
}
요약
JDBC(Java DataBase Connectivity): 자바 데이터베이스 프로그래밍
- Java에서는 인터페이스(=공통의 접근방법)을 제공해주고
- 벤더(DB회사)들은 인터페이스를 구현하여 Driver 클래스를 만들고 배포
- 벤더마다 드라이버 이름(jar)이 다름
- 벤더들이 제공하는 데이터에비스 접속 URL과 URL형식이 필요