자바에서 제공하는 인터페이스를 이용해 벤더(다른 회사들)들이 다양한 API를 만들어 사용할 수 있는 프로그래밍 기법을 인터페이스 기반의 프로그래밍이라고 한다.
벤더들이 만든 다양한 API들을 각각 이해해서 사용하는 것이 아닌 자바에서 제공하는 인터페이스를 이용해 API설계 자체를 깊게 이해할 필요 없이 간편하게 사용할 수 있다.
인터페이스를 이용하면 API의 내부동작(내부코드)방식을 숨기면서 API와 강하게 결합하지 않고도 인터페이스를 통해 간접적으로 상호작용을 할 수 있다.
이러한 연결방식을 느슨한 결합(Loose Coupling)관계라고 한다.
느슨한 결합(Loose Coupling)
: 두 객체가 느슨하게 결합되어 있다는 것은, 두 객체가 상호작용을 하긴 하지만 서로에 대해서 잘 모른다는 것을 의미한다. 느슨한 결합 관계는 객체간의 의존성을 줄여 시스템의 유지보수가 좀 더 용이해지고 유연성이 증가한다. 예를 들어 한 객체의 설계가 변경될 시 결합도가 강하면 다른 객체들의 설계도 전부 바꿔야하지만 느슨한 관계에서는 의존정도가 낮아 한 객체의 변경이 다른 객체에 영향을 미치지 않는다.
인터페이스를 선언하고 구현체 객체를 생성 및 할당하는 방식으로 연결한다. 이러한 접근 방식은 결합도를 낮춰 코드의 유연성을 높이고, 코드를 인터페이스에 의존하도록 만들어 변경이 용이하게 합니다.
자바에서 DB연결을 하는 대표적인 방법이 인터페이스 기반 프로그래밍을 하는 것인데, 다양한 종류의 DB를 인터페이스를 활용해 결합도를 낮추어 손쉽게 연결 및 변경할 수 있다.
각각 다른 종류의 DB접속에 필요한 동작을 만들어서 배포하는 API를 Driver라고 한다. 서로 다른 driver를 느슨하게 관리하기 위해 인터페이스를 만들어 DB와 연결한다. 인터페이스를 활용하면 사용하는 DB를 바꾸는 경우 다른 코드에 전달되는 Side Effect를 줄이고 코드 유연성을 높여준다.
Driver를 구현하기 위해 만드는 인터페이스를 Connection클래스라고 한다.
Connection 객체는 자바에서 제공한다.
DB를 연결하기 위해 필요한 정보는 다음과 같다.
1. URL : DB접속 URL
2. Username : 사용자, DB계정
3. Password : 비밀번호, DB비밀번호