부트캠프

Spring MVC - JDBC 기반 데이터 액세스 계층

hunm719 2023. 2. 20. 21:22
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의 동작 흐름

JDBC의 동작 흐름

  ● Java 애플리케이션에서 JDBC API를 이용해 적절한 데이터베이스 드라이버를 로딩 한 후, 데이터베이스와 인터랙션
   *JDBC 드라이버(JDBC Driver) : 데이터베이스와의 통신을 담당하는 인터페이스로 Oracle이나 MS SQL, MySQL 같은 다양한 벤더에서는 해당 벤더에 맞는 JDBC 드라이버를 구현해서 제공하며, 해당 JDBC 드라이버의 구현체를 이용해 특정 벤더의 데이터베이스에 액세스 할 수 있음

 -JDBC API 사용 흐름

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