일반적인 서버와 DB 연결 방법
- Connection 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결
- SQL 전달 : DB가 이해할 수 있는 언어인 SQL을 Connection을 통해 DB에 전달
- 결과 응답 : DB는 SQL을 수행하고 그 결과를 응답한다. 서버는 응답 결과를 활용
JDBC가 왜 나왔을까?
DB의 종류는 수십가지가 있다.
예전에는 DB마다 위에서 언급한 Connection 연결, SQL 전달, 결과 응답을 받아오는 방법이 천차만별이었다!!
이런 문제들을 해결하기 위해서 JDBC가 등장했다!
JDBC (Java Database Connectivity) : Java에서 DB에 접속할 수 있도록 하는 Java API
JDBC는 표준 인터페이스를 구현해서 DB에 종류에 상관하지 않게 Connection, Statement, ResultSet을 사용할 수 있게 만들었다.
JDBC의 등장으로 2가지 문제가 해결됐다.
- DB를 변경하면 서버의 코드도 함께 변경해야하는 문제 -> JDBC 표준 인터페이스에만 의존하기 때문에 DB종류에 상관없이 JDBC 구현 라이브러리만 변경하면 해결할 수 있다.
- 개발자가 DB마다 연결하는 방법을 새로 학습해야 하는 문제 -> JDBC 표준 인터페이스 사용법만 학습하면 다른 DB에 모두 적용이 가능!
그러나 JDBC는 오래된 기술이고, 사용하는 방법도 복잡하다. 그래서 JDBC를 사용하기 편리하도록 하는 다양한 기술이 있는데, 대표적으로 SQL Mapper, ORM 기술이 있다.
JDBC 직접 사용 : 애플리케이션 로직 -> SQL 전달 -> JDBC
SQL Mapper : 애플리케이션 로직 → SQL 전달 → SQL Mapper(JdbcTemplate, MyBatis) → SQL 전달 → JDBC
ORM 기술 : 애플리케이션 로직→ 객체 전달 → JPA ←JPA 구현체 (하이버네이트 ,이클립스링크) → SQL 전달 → JDBC
실무에서는 JDBC를 직접 사용하지 않고 SQL Mapper나 ORM 기술을 통해서 사용한다.
하지만 JDBC를 알아야 문제가 발생했을 때 근본적인 원인을 찾을 수 있기 때문에 꼭 알아야 한다.
다음 포스팅부터는 JDBC에 대해서 적용해보면서 알아보자!!
요즘 아주 삶이 촉촉하다! 밍지박사가 최고!
'Spring' 카테고리의 다른 글
의존관계 주입 방법 중 생성자 주입에 대해서 설명해주세요 (3) | 2023.04.04 |
---|---|
@ComponentScan은 무슨 역할인가요? @Autowired는 뭐 하는 아이인가요? (1) | 2023.03.16 |
Bean이 뭐에요? 그렇다면 객체는 뭔가요? 설명해주세요. (2) | 2023.03.09 |
Spring bean 조회 시 같은 타입이 두 개 이상인 경우는 어떻게 해요~? (2) | 2023.03.06 |
Spring에 등록된 Bean들을 조회해보자~ (2) | 2023.02.21 |