JDBC (Java Database Connectivity)란?
- java에서 데이터베이스와의 상호작용을 가능하게 하는 API입니다.
- 데이터베이스 쿼리 결과를 읽고 처리할 수 있다.
JDBC는 3가지 기능을 표준 인터페이스로 정의하여 제공한다.
주요 기능과 구조
- 연결 관리 (Connection Management):
- 데이터베이스 연결을 설정하고 유지합니다. DriverManager 클래스를 통해 데이터베이스 URL, 사용자 이름, 비밀번호를 사용하여 데이터베이스에 연결할 수 있습니다.
- 명령 실행 (Statement Execution):
- SQL 쿼리를 실행할 수 있는 다양한 Statement 객체를 제공합니다. 예를 들어, Statement, PreparedStatement, CallableStatement 등이 있습니다. 각 객체는 SQL 명령을 실행하고 결과를 반환받는 데 사용됩니다.
- 결과 처리 (Result Handling):
- SQL 쿼리 실행 후 반환된 결과를 처리할 수 있습니다. ResultSet 객체는 데이터베이스 쿼리 결과를 표 형식으로 제공하며, 이를 통해 데이터를 읽고 처리할 수 있습니다.
- java.sql.Connection - 연결
- java.sql.Statement - SQL을 담은 내용
- java.sql.ResultSet - SQL 요청 응답
Spring Data JDBC, Spring Data JPA 등과 같은 기술이 등장하면서 JDBC API를 직접적으로 사용하는 일은 줄어들었다.
하지만, Spring Data JDBC, Sprind Data JPA와 같은 기술도 데이터베이스와 연동하기 위해 내부적으로 JDBC를 이용하기 때문에 JDBC의 동작 흐름에 대해 알 필요가 있다.
JPA란? (Java Persistence API)
자바 애플리케이션에서 관계형 데이터베이스를 사용할 수 있도록 도와주는 자바 표준 ORM프레임워크입니다.
JPA는 데이터베이스의 테이블을 자바 객체로 매핑하여, 객체 지향적으로 데이터베이스 작업을 수행할 수 있게 해줍니다
ORM (Object-Relational Mapping)이 뭔데?
데이터베이스 테이블과 자바 클래스 간의 매핑을 정의합니다.
JPA 주요 기능:
- 객체-관계 매핑(ORM):
- 데이터베이스 테이블과 자바 클래스 간의 매핑을 정의합니다.
- 데이터베이스 작업의 단순화:
- SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있습니다. JPA는 쿼리 생성을 자동화하고, 개발자는 객체 지향적인 방법으로 데이터에 접근할 수 있습니다.
- 추상화: 데이터베이스와의 상호작용을 객체 모델로 추상화함으로써, 데이터베이스 종속적인 코드가 줄어듭니다. 이는 데이터베이스 변경 시 코드 변경을 최소화할 수 있게 합니다.
- 자동화된 매핑: 엔티티와 데이터베이스 테이블 간의 매핑을 자동으로 처리하므로, 복잡한 매핑 코드를 직접 작성할 필요가 없습니다.
- 트랜잭션 관리:
- 데이터베이스 트랜잭션을 자동으로 관리합니다. 개발자는 트랜잭션의 시작과 종료를 명시적으로 처리할 필요가 없습니다.
- 캐시와 성능 최적화:
- 캐싱: JPA 구현체는 1차 캐시와 2차 캐시를 지원하여 데이터베이스 접근 빈도를 줄이고 성능을 향상시킬 수 있습니다.
- 지연 로딩: 지연 로딩(Lazy Loading)을 통해 필요한 시점에만 데이터를 로딩하여 불필요한 데이터 로딩을 방지합니다.
트랜잭션이 뭔데?
트랜잭션은 데이터베이스에서 일련의 작업들을 하나의 단위로 묶은 것입니다. 이러한 트랜잭션은 모두 성공하거나 모두 실패하는 원자적 작업 단위로 처리됩니다. 이는 데이터베이스의 일관성과 무결성을 보장하기 위해 중요합니다.
정리하자면?
JDBC는 SQL 쿼리를 사용하여 데이터베이스와 직접 상호작용하는 저수준 API입니다.
JPA는 객체 지향적인 방식으로 SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행할 수 있게 하는 고수준 ORM 프레임워크입니다.
참고 자료
https://ittrue.tistory.com/250 [IT is True:티스토리]
'Backend Programming' 카테고리의 다른 글
스프링 빈과 애플리케이션 컨텍스트 그리고 AOP?? (0) | 2024.06.29 |
---|---|
MVC 패턴이란 무엇일까? (0) | 2024.06.28 |
스프링의 컨트롤러, 서비스, 레포지토리가 무엇인가? (0) | 2024.06.27 |
데이터 베이스 테이블? (0) | 2024.06.26 |
웹 서버와 웹 애플리케이션 서버 (0) | 2024.06.25 |