1.Spring Data JDBC |
1-1.JDBC(Java Database Connectivity)
-JDBC는 Java 애플리케이션에서 데이터베이스에 액세스하기 위해 Java 초창기(JDK 1.1) 버전부터 제공되는 표준 사양(Specification)
-Java개발자는 JDBC API를 사용해서 다양한 벤더(Oracle, MS SQL, MySQL 등)의 데이터베이스와 연동할 수 있음
-JDBC의 동작 흐름
● Java 애플리케이션에서 JDBC API를 이용해 적절한 데이터베이스 드라이버를 로딩 한 후, 데이터베이스와 인터랙션
*JDBC 드라이버(JDBC Driver) : 데이터베이스와의 통신을 담당하는 인터페이스로 Oracle이나 MS SQL, MySQL 같은 다양한 벤더에서는 해당 벤더에 맞는 JDBC 드라이버를 구현해서 제공하며, 해당 JDBC 드라이버의 구현체를 이용해 특정 벤더의 데이터베이스에 액세스 할 수 있음
-JDBC API 사용 흐름
● JDBC 드라이버가 정상적으로 로딩되면 DriverManager를 통해 데이터베이스와 연결되는 세션(Session)인 Connection 객체를 생성하는데 이는 비용이 많이 드는 작업
● 따라서 애플리케이션 로딩 시점에 Connection 객체를 미리 생성해두고 애플리케이션에서 데이터베이스에 연결이 필요할 경우에 미리 만들어 둔 Connection 객체를 사용함으로써 애플리케이션의 성능을 향상시킴
● 이처럼 데이터베이스 Connection을 미리 만들어서 보관하고 애플리케이션이 필요할 때 이 Connection을 제공해주는 역할을 하는 Connection 관리자를 Connection Pool이라고 함
+Spring Boot 2.0 부터는 HikariCP가 기본 DBCP(Database Connection Pool)로 채택됨
1-2.Spring Data JDBC
-데이터 액세스 기술 유형
(1)SQL 중심 기술
● 애플리케이션에서 데이터베이스에 접근하기 위해 SQL 쿼리문을 애플리케이션 내부에 직접적으로 작성하는 것이 중심이 되는 기술
● 대표적으로 mybatis와 Spring JDBC 등이 있음
1
2
|
Member member = this.jdbcTemplate.queryForObject(
"select * from member where member_id=?", 1, Member.class);
|
cs |
<Spring JDBC의 JdbcTemplate 사용 예시 코드>
(2)객체 중심 기술
● 모든 데이터를 객체(Object) 관점으로 바라보는 기술
● 데이터베이스에 접근하기 위해서 SQL 쿼리문을 직접적으로 작성하기 보다 Java 객체(Object)를 이용해 애플리케이션 내부에서 이 Java 객체(Object)를 SQL 쿼리문으로 자동 변환 한 후에 데이터베이스의 테이블에 접근함
● 대표적으로 JPA, Spring Data JDBC 등이 있음
● 객체(Object) 중심의 데이터 액세스 기술을 ORM(Object-Relational Mapping)이라고 함
+인메모리(In-memory) DB는 애플리케이션이 실행된 상태에서만 데이터를 저장하고 애플리케이션 실행이 중지되면 인메모리 DB 역시 실행이 중지되어 저장된 데이터가 사라짐
+개발 환경에서는 테스트에 필요한 데이터 이외에 나머지 쓸데없는 데이터는 테이블에 없는 것이 테스트의 정확도 면에서 유리하기 때문에 개발 테스트 환경에서는 인메모리 DB 사용이 권장됨
-JPA(Java Persistence API)
● 자바 진영의 ORM기술
● 애플리케이션에서 사용하는 객체를 자동으로 데이터베이스 레코드와 매핑할 수 있음
● 복잡한 객체 그래프를 다룰 수 있어 대규모 애플리케이션에 적합
● 학습 곡선이 높고 어려운 개념이 많아 초기 설정이 어려움
-Spring Data JDBC
● JPA처럼 ORM 기술을 사용하지만 JPA의 기술적 복잡도를 낮춘 기술
● 자바 객체와 데이터베이스 레코드를 직접 매핑하고, 애플리케이션에서 사용하는 도메인 객체를 데이터베이스 테이블과 매핑하는 데 필요한 어노테이션을 제공함
● JPA에 비해 상대적으로 쉽게 이해하고 사용할 수 있지만, 복잡한 관계를 가지는 데이터베이스에는 적합하지 않음
-Spring Data JPA
● Spring Data JDBC와 JPA를 결합
● JPA의 장점과 Spring Data JDBC의 단순함을 모두 사용
● JPA와 동일한 ORM을 사용하지만 JPA보다 더 쉽고 간단한 구현을 제공함
● Spring Framework에 익숙한 경우 쉽게 사용할 수 있음
-이미지 및 내용 출처 - code states
'부트캠프' 카테고리의 다른 글
HTTP 헤더(Header) (0) | 2023.02.24 |
---|---|
Spring MVC - JPA 기반 데이터 액세스 계층 part 1 (0) | 2023.02.23 |
Spring MVC - 예외 처리 (0) | 2023.02.17 |
Spring MVC - Service 계층 (0) | 2023.02.17 |
Spring MVC - API 계층 part 2 (0) | 2023.02.14 |