스프링 DB관리 방법

JH Bang·2023년 6월 17일
0

스프링 프레임워크에서는 DB 관리를 위한 몇가지 방법을 제공한다.
코드 생산성을 향상시키기 위한 기술의 발전에 따라 크게 4단계로 나눌 수 있다.

JDBC -> JDBC Template -> JPA -> 스프링 데이터 JPA

🌱 JDBC (Java Database Connectivity):

JDBC는 자바에서 데이터베이스에 접근할 수 있도록 해주는 API. 이를 통해 SQL 질의를 실행하고, 데이터베이스에서 데이터를 읽고 쓸 수 있다.
그러나 JDBC는 드라이버를 등록하고 DB연결, 쿼리문 작성/실행, 결과 반환, DB 연결 종료 등의 과정을 코드로 일일이 작성해야하고, try-catch 예외 처리가 필요하다.
따라서 반복되는 과정을 템플릿화한 것이 JDBC 템플릿이다

🌱 JDBC Template:

JDBC Template은 데이터베이스 연결의 생성과 종료, SQL 질의의 실행, 결과 처리 등을 자동화해준다. 개발자는 비즈니스 로직에 집중할 수 있다.
실제 아래 링크에 가면 JdbcTemplate 코드를 볼 수 있는데 엄청 긴 것을 확인할 수 있다.
https://github.com/spring-projects/spring-framework/blob/main/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java

🌱 JPA (Java Persistence API):

JPA는 자바에서 ORM (Object-Relational Mapping) 기능을 제공하는 API다.
ORM은 객체 지향 프로그래밍과 관계형 데이터베이스를 매핑해주는 기술로, JPA를 사용하면 개발자는 SQL 질의를 직접 작성하지 않고 객체지향 코딩 방식으로 DB를 조작할 수 있게된다.
다만 PK가 아닌 키를 대상으로는 JPQL(Java Persistence Query Language)을 작성해야 한다. JPQL은 JPA(Java Persistence API)가 제공하는 쿼리 언어로서, SQL과 유사하지만 객체 지향적인 측면을 가지고 있다.

JPQL은 SQL과 달리 데이터베이스 테이블이 아닌 자바 엔티티 객체를 대상으로 작동한다. 예를들어 "select m from Member m"라는 JPQL 문장은 "Member"라는 엔티티 객체를 모두 선택하라는 의미다.
JPQL은 연결된 DB에 상관없이 동일한 자바 코드를 작성할 수 있도록 한다. JPA 구현체가 JPQL을 데이터베이스의 쿼리 언어(SQL 등)로 변환한다. DB가 변경되더라도 JPQL은 변경되지 않아 코드의 이식성이 증가한다.

🌱 Spring Data JPA:

스프링 데이터 JPA는 JPA를 좀 더 편리하게 사용할 수 있도록 하는 라이브러리다. 레포지토리 인터페이스를 만들기만 하면 스프링 데이터 JPA가 자동으로 구현체를 생성해준다.

profile
의지와 행동

0개의 댓글