JDBC 소스를 뽀개기
Last updated
우리가 처음 자바 웹 개발을 접했을때 데이터베이스와 연동하기 위한 JDBC 기술을 배운적있을것이다. 바로 JDBC 에서 사용한 디자인 패턴이 바로 전형적인 "Bridge Pattern" 이라고 볼수있다.
JDBC로 데이터베이스 연결시 각종 블랜드 상관없이 변경할때 각작의 설정에만 맞게 코딩하면 쉽게 연동할수 있다. 그것이 JDBC에서 미리 제공하는 통일된 interface가 있기 때문이다. 각각의 데이터베이스는 자신에 맞게 구현된 데이터베이스 드라이버로 연결을 맺는다.
프로그램을 실행할 때 JVM은 먼저 로드할 클래스에 해당하는 클래스 개체가 로드되었는지 확인하고 로드되지 않은 경우 JVM은 클래스 이름을 기반으로 .class 파일을 찾아 클래스 개체를 로드한다.각 배열은 클래스 객체의 클래스로 매핑되며 동일한 요소 유형과 차원을 가진 모든 배열은 클래스 객체를 공유할 수 있다. Class.forName에서 드라이브 클래스를 로딩한 후 정적 코드 블록을 실행하면 new Driver() 되고 DriverManager의 registerDriver를 호출하여 DriverManager에 new Driver() 등록해준다.
JDBC의 클래스 디자인은 sum 회사가 인터페이스 세트를 설계한 다음 각 데이터베이스 회사에서 인터페이스를 구현하였다. 우리는 호출 과정에서 인터페이스를 사용하여 정의하기만 하면 되고 Driver를 로딩하는 과정에서 하위 코드가 인터페이스의 implement 클래스를 선택하여 필요한 해당 데이터베이스 연결을 한다. 데이터베이스 교체가 바로 드라이브의 교체를 의미하며 모든 드라이브가 이 인터페이스를 구현하면 reflection 드라이브를 이용한 class.forName()에 로딩이 필요한 드라이브만 표시하면 되고, 그러면 모든 데이터베이스에 동일하게 적용가능하다.
Bridge pattern을 사용하면 Driver에 로드된 클래스만 수정하면 다른 데이터베이스 연결에서 쉽게 변환할 수 있으며 로드된 클래스의 선언을 구성 파일에 넣으면 다시 컴파일할 필요가 없으며 다른 데이터베이스 간에 쉽게 변환할 수 있습니다.
끝!
Bridge pattern 에 더 상세한 내용은 시리즈를 찾아보시라.