스프링으로 DB의 데이터에 접근하는 방법은 크게 다음과 같이 4가지 방식이 있다.
- jdbc
- jdbcTemplate
- JPA
- 스프링 데이터 JPA
각각이 뭔지 간단하게만 알아보자.
1. Jdbc
Java Database Connectivity의 줄임말로, 자바 언어를 통해 DB와 연동하여 데이터를 주고받을 수 있게 해주는 API이다. 자바 언어로 작성된 응용프로그램과 DB의 중간에서 서로간의 통신을 번역해주는 녀석이라고 생각할 수 있다.
기존의 DB접근 방법은 TCP/IP를 통해 서버와 DB가 서로 커넥션을 연결하고, SQL을 DB에게 전달하면 DB가 전달받은 SQL을 수행하고 그 결과를 응답하는 방식이었는데 문제는 각 DB들마다 저마다의 사용방법과 접근방법이 조금씩 다르단 것이었다! 즉 DB를 바꿀 때마다 그에 맞춰 접근하는 코드도 함께 바꿔야하는 큰 번거로움이 있었고, 이를 해결하고자 DB접근 표준 인터페이스인 Jdbc가 등장한 것이다.
그러나 단점으로는 상당히 복잡한 코드를 짜야 돼서 고생을 많이 한다는 거고, sql 쿼리는 직접 짜야 한다.
DB와 커넥션을 맺고, SQL을 담은 내용(Statement)을 보내고, 그에 대한 응답(ResultSet)을 받고, 커넥션을 끊는 4단계로 동작한다.
2. JdbcTemplate
이 놈은 실무에서도 많이 쓴다고 한다. 순수 jdbc를 좀 더 효율적으로 사용할 수 있게끔 해주는 틀로, 스프링 프레임워크에서 제공해주는 놈이다. 순수 Jdbc의 단점인 "복잡한 코드 짜야 함!"을 개선하여, Jdbc에서 흔히 마주치는 반복 코드를 대부분 제거한다. 그러나 SQL쿼리는 직접 짜야 한다는 단점이 존재하긴 한다. 요약하자면 jdbc로 좀 더 간결한 코드를 짤 수 있게끔 해준다.
3. JPA
Java Persistence API의 줄임말이다. 자바 진영의 ORM기술 표준 인터페이스이고, 이를 여러 업체가 구현체로 만들었으며 대표적으론 hibernate 등이 있다. JdbcTemplate가 해냈던 기존의 반복 코드 제거는 물론 기본적인 SQL도 JPA가 지가 알아서 만들어서 실행해준다. 이를 통해 개발자가 SQL에 초점을 맞추지 않고 객체 중심의 설계에 좀 더 초점을 맞추게 된다는 점에서 개발 생산성이 크게 높아지게 된다.
※ ORM : Object Relational Mapping의 약자로 객체와 관계형 DB를 매핑하는 것을 말함
4. 스프링 데이터 JPA
스프링에서 jpa를 편하게 쓸 수 있도록 지원해주는 기술이다. save, findAll, delete와 같이 간단한 CRUD기능들을 공통으로 처리하는 JpaRepository를 제공한다. 인터페이스 메서드만 선언하면 메서드 이름만으로 쿼리를 생성하는 마법같은 기능도 제공한다. (예를 들어 findByName으로 메서드를 지으면 지가 알아서 이름으로 찾는 쿼리를 작성해줌. 물론 이를 위해서 당연히 정해진 규칙에 따라 메서드 이름을 작성해야 함. 자동으로 내부에서 구현체를 만들어 동작시키는 것임)
'WEB > Spring' 카테고리의 다른 글
lombok - is로 시작하는 boolean타입에 대해 만들어지는 Getter에 대해 (0) | 2023.08.08 |
---|---|
@Value 어노테이션 멕인 값이 null로 나올 때 (0) | 2023.02.21 |
Lombok 라이브러리 살펴보기 (0) | 2023.01.25 |
스프링 빈(Bean)에 대한 얘기와 빈 등록방법 (0) | 2023.01.22 |
스프링 웹 개발의 기초 - 정적 컨텐츠, 웹 MVC, 그리고 api (0) | 2023.01.21 |