개발/JPA

[JPA] JPA 설정 방법

Jindory 2022. 5. 1. 21:52
반응형

안녕하세요. 개발자 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 블로그에 방문해주셔서 감사합니다.

 

[참고]

https://writemylife.tistory.com/87

반응형