Node의 Express.JS에선 typeORM을 활용해 프로젝트를 진행했다. 지금은 Java를 배우면서 JDBC라는 API를 접했고, 각각의 차이를 정리해보자.
이전에 공부한 Layered Pattern
에서 데이터를 보존하는 계층으로 Persistence Layer가 있다고 배웠다.
해당 계층에서 DAO
패턴으로 ORM
객체를 활용해 데이터베이스와 연결했다.
JDBC는 자바에서 데이터베이스와 프로그램을 연결시켜주는 인터페이스이다.
이 API를 활용해 우리는 영속성을 보존하며 단일 책임 원칙에 기반한 고립성 데이터베이스를 안전하게 유지할 수 있다.
또한 특정 DBMS에 종속되지 않아 DBMS를 구현한 JDBC 드라이버만 변경한다면 다양한 DBMS와 사용할 수 있다.
JDBC를 구동하는 과정은 다음과 같다.
import java.sql.*;
1. Class.forName(ConnectionInform.DRIVER_CLASS);
// ConnectionInform은 연동하고 싶은 테이블 정보가 담긴 클래스.
// 이 과정을 통해 테이블을 클래스화 한다.
// jdbc 드라이버를 호출한다.
2. Connection connection = DriverManager.getConnection(
ConnectionInform.URL, ConnectionInform.USERNAME, ConnectionInform.PASSWORD);
// DriverManager 클래스로 Connection 인스턴스를 생성한다.
// 테이블과 java를 연결한다.
3-1. Statement statement = connection.createStatement();
// sql 구문을 변수에 저장 및 전송 객체 생성한다.
3-2. PreparedStatement preparedstatement = con.prepareStatement(DML || DDL);
// PreparedStatement를 사용해 재사용성이 좋은 과정을 거칠 수 있다.
4. ResultSet resultset = statement.executeQuery(DML) || statement.executeUpdate(DDL);
// DML이 인자에 담길 경우 ResulSet 타입에 담긴다.
5. resultset.close(); statement.close(); connection.close();
// 사용이 완료된 변수는 close 메소드로 직접 꺼줘야 한다.
그러나 JDBC 방식은 코드가 방대하다는 단점이 있다. 단순 조회를 위해서도 위와 같은 과정을 모두 거쳐야 하고, 각각의 클래스 모두 비용이 크기 때문에 직접 상태 관리를 해야해 개발자에게 부담이 된다.
이런 단점을 다른 Framework로 극복할 수 있는데, 추상화시키는 방식에 따라 SQL Mapper
와 ORM
으로 나눌 수 있다.
개발자로 하여금 비즈니스 로직에 집중하도록 JDBC를 한 단계 추상화시켜 불필요한 과정을 숨겨 직접 JDBC를 사용하지 않도록 느껴질 뿐이지 실제로는 JDBC를 통해 DB에 접근하는 건 똑같다.
다음은 JDBC를 대체할 수 있는 프레임워크들에 대해 간략히 알아보자.
그러나,
Java Persistence API
자바app - JPA - JDBC - DB
이렇게 위치.그러나,
유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기