JPA 초기 설정

LeeKyoungChang·2022년 12월 7일
0
post-thumbnail

📝 시작하기 전, JPA에서는 JDBC connection을 등록해야 한다.
스크린샷 2022-12-08 오전 12 14 02

이와 같은 오류가 발생하는데, 이는 초기에 db 설정을 하지 않았기에 발생한 오류이다.
application.yml에서 db 등록을 해줘야 한다. (@Configuration으로 인해 해야한다.)

스크린샷 2022-12-08 오전 1 00 10
  • 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;

✔️ 실행 결과

스크린샷 2022-12-08 오전 12 42 08 - `EntityManagerFactory` : EntityManager를 만들어주는 곳 - **JPA에서 가장 중요한 객체는 EntityManager이다.** - EntityManager를 생성해주는 것은 EntityManagerFactory이다. - Spring에서 EntityManagerFactory를 Bean으로 등록한다.

 

💡 참고
스크린샷 2022-12-08 오전 12 49 22
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();  
   }
}

 

 

📖 A. 초기 환경(build.gradle)

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()  
}
  • io.spring.dependency-management 플러그인을 적용하면, SpringBoot의 플러그인은 자동으로 사용하고 있는 Spring Boot의 버전에서 spring-boot-dependencies boom을 가져온다.
  • bom에서 관리되는 dependency를 선언할 때, version number를 생략할 수 있다.

 

 

📖 B. Jpa에 Repository

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의 타입
  • Jpa에는 라이브러리에 setter, getter 등이 저장되어 있다.
profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글