인터페이스(규약)과 JDBC의 관계

Kyu·2021년 1월 21일
0

Java 공부기록

목록 보기
19/40

인터페이스 (규약)과 JDBC의 관계

인터페이스는 JDBC에서 가장 많이 활용이 된다.

JDBC(Java DataBase Connecitiviy)란?

  • 자바 프로그램 내에서 DB와 관련된 작업을 처리할 수 있도록 도와주는 API이다.
  • JDBC 클래스는 자바 패키지 java.sql과 javax.sql에 포함되어 있다.

인터페이스는 규약을 정하는 것이다. 인터페이스는 추상메서드로 이루어져있다. 인터페이스는 단독으로 동작할 수 없다. 반드시 추상메서드를 구현시키 위해서는 하위 클래스 (자식 클래스)가 있어야한다.

집에 리모컨만 있으면 아무 쓸모가 없다. TV가 있어야 한다. 인터페이스 자체는 도움이 안되지만 하위 클래스를 만나면 기능을 100% 발휘할 수 있다.

인터페이스를 가지고 있는 하위 클래스가 반드시 재정의(Override)하기 때문에, 부모-자식관계라면 하위클래스의 동작방식을 모르더라도 인터페이스로 하위클래스를 100% 동작시킬 수 있는 기능이 인터페이스에 있다.

왜 이런 인터페이스가 JDBC와 관계가 있는가?

자바에서 JDBC 프로그래밍을 하려면 DB벤더(공급자)의 DB를 써야한다. 예를 들어 Oracle, MySQL, MsSQL 각각의 데이터베이스를 자바에서 활용하려면 API가 있어야한다. 그 API는 벤더들이 만든다. 자기네 데이터베이스와 연동할 수 있는 API를 만든다. 예를 들어 오라클은 JavaOracle이라는 클래스가 있고 그 안에 CRUD를 할 수있는 메서드 들이 있다. 메서드의 동작의 이름은 다른 벤더사와 같을수도 있지만 거의 다를 것이다.

자바에서는 JDBC 프로그래밍을 하기위해서는 벤더에서 제공하는 클래스를 이용해야 한다. 근데 어떤 문제가 있을까? 벤더에서 제공하는 클래스가 통일되어 있지 않으면 자바 개발자들은 모든 데이터베이스의 동작을 알고있어야 JDBC프로그래밍이 가능하다는 의미이다. 하지만 사실상 불가능하다.

인터페이스를 적용해서 개선할 수 있다.

자바에서도 데이터베이스 연동을 위한 java.sql 패키지 안에 데이터베이스와 관련된 객체를 인터페이스와 만들어 놓는다. 이 인터페이스를 벤더들이 가지고 구현클래스를 만들게 한다. 자바 개발자 입장에서는 인터페이스가 있으면 인터페이스를 통해서 하위클래스를 핸들링할수있다. 하위클래스가 동작방식이달라도 이름이 같다고하면 동작방식을 몰라도 쓸 수 있을 것이다.

예를 들어 자바가 데이터베이스에 접속하기위해 Connection이라는 인터페이스를 만들었다. 그리고 getConnection(String url, String user, String passwd); 이라는 추상메서드를 만들었다.

public interface Connection {
	getConnection(String url, String user, String passwd);
}

벤더들한테 이 Connection을 주고 구현을 시키면 된다.
벤더에서 제공해주는 driver class와 자바에서 제공하는 인터페이스가 연결이되면 전부 인터페이스를 통해 접속할 수 있다.

profile
TIL 남기는 공간입니다

0개의 댓글