반응형
안녕하세요. 개발자 Jindory입니다.
오늘은 JPA 사용할 때 설정하는 방법에 대해서 알아보는 글을 작성해보고자 합니다.
# 글 작성 이유
자바 객체와 데이터베이스 테이블 간의 매핑처리를 JPA로 할때 설정 및 작성해야하는 파일들을 나열하고자 합니다.(몇 개를 빼먹어서 DataJpaTest할때 엄청나게 애 먹어서 까먹지 않기 위함입니다......)
Setp1. 스프링 JPA 설정하기
1) Build.gradle에 아래 코드를 설정하고 Data-Jpa와 Data-Jdbc, 사용할 DB를 build합니다.
// Spring Data JDBC
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
// Spring Data Jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// Spring Web
implementation 'org.springframework.boot:spring-boot-starter-web'
// Lombok
compileOnly 'org.projectlombok:lombok'
// Spring Boot Devtool
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// Mysql
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2) application.properties를 아래처럼 작성합니다.
# Database Setting
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/[DBName]
spring.datasource.hikari.username =[DB 사용 ID]
spring.datasource.hikari.password =[DB 비밀번호]
spring.datasource.hikari.connection-test-query=SELECT 1
# JPA Setting
spring.jpa.database = mysql
spring.jpa.database-platform = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.generate-ddl = false
spring.jpa.hibernate.ddl-auto= update
spring.jpa.hibernate.use-new-id-generator-mappings=false
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.format_sql = true
# hibernate logging
logging.level.org.hibernate = info
application.properties에 설정한 정보를 기반으로 Spring Boot에서 DB와 JPA를 설정합니다.
설정 옵션들에 대한 설명은 아래 링크에서 확인해 보세요.
(application.properties 설정 방법은 여기를 참고하세요)
Setp2. Spring Jpa설정 Bean 추가
@Configuration 설정이 있는 java파일에 아래의 내용을 추가.
import java.util.Properties;
@Bean
@ConfigurationProperties(prefix="spring.jpa")
public Properties hibernateConfig(){
return new Properties();
}
제가 설정한 DataSource설정 파일 전체는 아래와 같습니다.
package core.configuration;
import javax.sql.DataSource;
import java.util.Properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.properties")
public class DatabaseConfiguration {
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
@ConfigurationProperties(prefix="spring.jpa")
public Properties hibernateConfig(){
return new Properties();
}
@Bean
public DataSource dataSource() throws Exception{
DataSource dataSource = new HikariDataSource(hikariConfig());
System.out.println(dataSource.toString());
return dataSource;
}
}
Step3. @SpringBootApplication이 있는 파일에 아래와 같은 Annotation을 추가한다.
@SpringBootApplication
@ComponentScan("core")
@EnableJpaAuditing
@EntityScan(
basePackageClasses = {Jsr310JpaConverters.class},
basePackages = {"core"})
@EnableJpaRepositories(basePackages = {"core"})
public class SportsMatchApplication {
}
- @EnableJpaAuditing : Spring Audit 기능을 활용하기 위해 @EnableJpaAuditing 어노테이션을 추가
- @EntityScan : Entity class가 Entity를 사용하고자 하는 application main package와 전혀 다른 package에 있을때 사용합니다.
- @EnableJpaRepositories : JPA Repository 빈을 활성화 하는 어노테이션입니다.
이렇게 JPA 사용할 때 설정하는 방법 대해서 알아봤습니다.
혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.
오늘도 Jindory 블로그에 방문해주셔서 감사합니다.
[참고]
반응형
'개발 > JPA' 카테고리의 다른 글
[JPA] Column에 default Value 설정하기 (0) | 2022.07.02 |
---|---|
[JPA] Eclipse에서 QueryDsl 설정하기 (0) | 2022.05.21 |
[JPA] JPA 관련 application.properties 설정 (0) | 2022.04.27 |
[JPA] 객체지향 쿼리 (0) | 2022.02.22 |
[JPA] JPA 영속성 컨텍스트 (0) | 2022.02.22 |