첫 번째 시간과 두 번째 시간까지 개념 위주로 JPA에 대해서 알아보았다.
이번 시간에는 예시 Gradle 프로젝트를 통해서, SpringFramework에 MySQL을 연동하면서 JPA 환경을 구축하는 방법을 정리하려고 하는데, 이번 시간에는 필요한 라이브러리에 정리한다.
하지만 그 전에 앞서, DataSource에 대한 개념을 짚고 넘어가야 한다.
위 그림은 Data Access Layer를 나타내는 그림인데, 가운데 DataSource라는 것이 있다.
JDBC 명세의 일부분이면서 일반화된 연결 팩토리이다.
Database와 관계된 connection 정보를 담고 있으며, bean으로 등록하여 인자로 넘겨주는데, Spring은 이 과정을 통해, DataSource로 DB와의 연결을 획득한다.
DataSource 종류 중 dbcp2 라이브러리를 활용하는 BasicDataSource를 사용할 것이다.
준비된 환경은 아래와 같다.
SpringFramework : 5.3.7
Java11
tomcat : 8.5.59
Gradle : 6.3
MySQL : 8.0.21
참고로, 라이브러리는 https://mvnrepository.com/ 이 사이트에서 검색해서 찾을 수 있다.
spring-jdbc는 JDBC의 장점과 단순성을 그대로 유지하면서도 기존 JDBC의 단점을 극복할 수 있게 해주고, 간결한 형태의 API 사용법을 제공하며, JDBC API에서 지원되지 않는 편리한 기능을 제공한다.
spring-orm은 이후에 추가될 Hibernate 라이브러리를 지원하는 라이브러리이다.
implementation 'org.springframework:spring-jdbc:5.3.7'
implementation 'org.springframework:spring-orm:5.3.7'
JDBC를 활용하기 위해선 mysql-connector가 필요한데, 이를 라이브러리를 추가함으로써 해결할 수 있다.
build.gradle에 mysql 버전에 맞게 dependency를 추가하면 된다.
implementation 'mysql:mysql-connector-java:8.0.21'
Hibernate 라이브러리를 활용하기 위해선 여러가지 dependency가 필요하다.
implementation 'org.hibernate:hibernate-core:6.0.0.Alpha7' (Hibernate 라이브러리)
implementation 'org.hibernate:hibernate-entitymanager:6.0.0.Alpha7' (Hibernate가 JPA 구현체로 동작하도록 JPA 표준을 구현한 라이브러리)
JPA를 한 단계 더 추상화 시킨 spring-data-jpa depndency를 추가한다.
implementation 'org.springframework.data:spring-data-jpa:2.5.0'
dbcp2라이브러리는 DataSource라는 인터페이스를 직접 구현한 BasicDataSource 구현체를 제공하는 라이브러리이다.
implementation 'org.apache.commons:commons-dbcp2:2.8.0'