1. JDBC가 무엇인지 이해할 수 있다.
2. Spring Data JDBC가 무엇인지 이해할 수 있다.
- JDBC (Java Database Connectivity)
✔︎ Java 기반 애플리케이션의 코드 레벨에서 사용하는 데이터를 데이터베이스에 저장 및 업데이트하거나, 반대로 데이터베이스에 저장된 데이터를 Java 코드 레벨에서 사용할 수 있도록 해주는 Java에서 제공하는 표준 API
✔︎ JDBC의 동작 흐름을 알면 Spring에서 지원하는 데이터 액세스 기술을 사용하는 데 도움이 됨
✔︎ Java 애플리케이션에서 JDBC API를 이용해 적절한 데이터베이스 드라이버를 로딩한 후, 데이터베이스와 인터렉션
✔︎ JDBC 드라이버
1. JDBC 드라이버 로딩
2. Connection 객체 생성
3. Statement 객체 생성
4. Query 실행
5. ResultSet 객체로부터 데이터 조회
6. ResultSet 객체 Close, Statement 객체 Close, Connection 객체 Close
✔︎ 데이터베이스 Connection 객체를 미리 만들어 보관하고 애플리케이션이 필요할 때 이 Connection을 제공해주는 역할을 하는 Connection 관리자
✔︎ Spring Boot 2.0부터 HikariCp
가 기본 DBCP(Database Connection Pool)
- Spring Data JDBC
✔︎ SQL 중심의 기술
✔︎ 객체(Object) 중심의 기술
✔︎ 메모리 안에 데이터를 저장하는 데이터베이스
✔︎ 애플리케이션이 실행되는 동안에만 데이터를 저장하고 있고, 실행이 중지되면 데이터가 모두 사라짐
✔︎ 테스트 환경에서 유리
✔︎ 예시 : H2 등
✔︎ Spring에서 지원하는 CrudRepository
인터페이스는 CRUD에 대한 기본적인 메서드를 정의하고 있음
✔︎ 별도의 CRUD 기능을 개발자가 직접 구현할 필요 ❌
✔︎ 파일의 설정 정보 등록을 통해 데이터베이스 설정, 데이터베이스의 초기화 설정 등의 다양한 설정 가능
✔︎ application.yml
방식은 중복되는 프로퍼티의 입력을 줄여주기 때문에 application.properties
방식보다 더 선호되는 추세
✔︎ 엔티티 클래스의 이름은 데이터베이스 테이블의 이름에 매핑
✔︎ 엔티티 클래스 각각의 멤버 변수는 데이터베이스 테이블의 컬럼에 매핑
✔︎ 엔티티 클래스의 멤버 변수에 @Id
애너테이션을 추가하면 데이터베이스 테이블의 기본키(Primary Key) 컬럼과 매핑됨
build.gradle
에 사용할 데이터베이스를 위한 의존 라이브러리 추가application.yml
파일에 사용할 데이터베이스에 대한 설정schema.sql
파일에 필요한 테이블 스크립트 작성application.yml
파일에서 schema.sql
파일을 읽어서 테이블을 생성할 수 있도록 초기화 설정 추가☞ JDBC의 흐름을 직접 그려보며 어느 정도 이해했고, Spring Data JDBC 적용 순서 또한 직접 코드를 작성해보면서 몸소 이해하려 노력했다. 그러나 아직 아무 것도 없는 상황에서 내가 직접 해보라하면 못할 듯 ,,, 🥲
데이터 액세스 계층의 내용들은 앞으로 계속 이어질 예정이다. Spring Data JDBC
vs JPA
vs Spring Data JPA
등이 있는데 어떤 기술을 위주로 학습하는 느낌이 아니라, 어느 기술은 기초가 되고 그 기초를 바탕으로 실무에서 가장 많이 사용하는 기술도 있기에 뭐 하나 빠짐없이 차근차근 이해해갈 생각이다.
기초없는 성취는 없다.
기초없이 성취를 이룬다면, 이룬 뒤 다시 기초로 돌아가게 된다.
・ Spring Data JDBC 기반 도메인 엔티티 및 테이블 설계
・ Spring Data JDBC 통한 데이터 액세스 계층 구현