📝 시작하기 전, JPA에서는 JDBC connection을 등록해야 한다.
이와 같은 오류가 발생하는데, 이는 초기에 db 설정을 하지 않았기에 발생한 오류이다.
application.yml
에서 db 등록을 해줘야 한다. (@Configuration
으로 인해 해야한다.)
- ddl-auto : 자동으로 업데이트
- database-patform : hibernate은 자동으로 DB를 만들어주지만 환경에 따라 sql문법이 다르다. (그래서 mysql 8버전을 사용하기 위해 이와 같이 적었다.)
build.gradle에서
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'mysql:mysql-connector-java'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
이와 같이 초기 설정을 한다.
&nbsbp;
✔️ 실행 결과
- `EntityManagerFactory` : EntityManager를 만들어주는 곳 - **JPA에서 가장 중요한 객체는 EntityManager이다.** - EntityManager를 생성해주는 것은 EntityManagerFactory이다. - Spring에서 EntityManagerFactory를 Bean으로 등록한다.
💡 참고
javax.persistence
: JPA API (JPA에 정의된 것, JPA package)
✔️ JPA 기본적인 코드
@Autowired
EntityManagerFactory entityManagerFactory;
@Override
public void run(String... args) throws Exception {
EntityManager entityManager = entityManagerFactory.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try{
transaction.begin();
// JPA 관련 코드
transaction.commit();
}catch (Exception e){
transaction.rollback();
}finally {
entityManager.close();
}
}
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.6'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.study.spring'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'mysql:mysql-connector-java'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
import com.study.spring.studyjpaproject.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
// Spring Data JPA Repository를 완성
public interface UserRepository extends JpaRepository<User, Integer> {
}
JpaRepository<1, 2>
: 1은 Entity, 2은 primary key의 타입