[ 목적 ]
JDBC 프로그래밍을 해보았지만, 내 블로그에 정리된 자료가 없어서 정리하고자 이 글을 작성한다.
[ JAVA DATABASE CONNECTIVITY DRIVER]
우리가 자바로 프로그래밍하면서 데이터베이스를 사용할 경우 JPA나 마이바티스를 많이 활용해서 데이터베이스에 CRUD연산을 수행하게 된다. 이때 활용되는 것이 JDBC 드라이버이다.
먼저, JDBC를 사용하는 과정이다.
1. DriverManager( JDBC DRIVER MANAGER)의 getConnection을 통해 커넥션을 만든다.
2. connection을 통해 statement를 얻는다.
3. statement를 통해 쿼리를 실행하여 resultSet을 얻는다.
4. ResultSet의 cursor을 통해 데이터를 가져온다.
우리가 자주 사용하는 JPA나 MyBatis도 내부적으로 JDBC를 사용한다.
>>
1. 클라이언트는 cursor을 통해 서버의 프로세스에게 데이터 CRUD를 요청
2. 서버 프로세스는 버퍼 캐시나 디스크에서 조회/처리한 데이터를 메모리에 올림,
3. 메모리에 올라간 데이터의 레코드의 커서를 통해 현재 데이터를 가져오고 next()를 통해 커서를 다음 레코드로 이동시키면서 데이터를 가져옴.
[ preparedstatement, statement ]
두 statement의 차이점은 sql이 데이터베이스 관리 시스템에 의해 캐싱되느냐의 차이이다.
statement의 경우 똑같은 쿼리가 들어오더라도 새로 컴파일, 실행계획이 세워지며 비효율적이다. postgresql의 경우 pg_statements 테이블에 쿼리가 캐싱된다.
[ JPA, MyBatis ]
JDBC만 가지고 데이터베이스 작업을 할 수 있지만 생산성, 유지보수성, 복잡성, 데이터베이스 독립성, 코드의 분리, 캐시 최적화 등의 이점이 있어 MyBatis나 JPA등의 프레임워크를 사용한다. 두 프레임워크에서 JDBC를 내부적으로 사용하고 있지만 사용하는 방식이 다르다.
우리 회사에서 사용하는 MyBatis의 경우 SQL Mapper에 해당하고 jpa는 ORM이라고 흔히 부른다.
차이점은 위 표에 자세히 나와있다.
'데이터베이스' 카테고리의 다른 글
트랜잭션 데이터 저장 과정, Direct Path Insert, Delete 과정 (0) | 2023.06.25 |
---|---|
SQL 튜닝과 조인 (0) | 2023.06.24 |
postgresql의 운영에 필요한 테이블과 wait event (1) | 2023.06.11 |
데이터베이스 sequential, scattered (0) | 2023.06.08 |
postgresql mvcc (0) | 2023.05.20 |