지대한
8 months ago
7 changed files with 140 additions and 2 deletions
@ -0,0 +1,28 @@ |
|||||||
|
# Spec |
||||||
|
|
||||||
|
## 환경 구성 |
||||||
|
|
||||||
|
### 기본 정보 |
||||||
|
|
||||||
|
- java 21 |
||||||
|
- spring boot 3.2.1 |
||||||
|
- jpa |
||||||
|
- mysql |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 설정 정보 |
||||||
|
|
||||||
|
### log4jdbc.log4j2.properties 속성 |
||||||
|
|
||||||
|
| 속성 | 설명 | |
||||||
|
|--------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------| |
||||||
|
| log4jdbc.spylogdelegator.name | 로그4jdbc에서 사용할 로그 델리게이트(Delegate)의 이름을 지정합니다. 이 구성을 통해 로그 델리게이트를 변경할 수 있습니다. 이 코드에서는 SLF4J를 사용하는 net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator가 지정되어 있습니다. | |
||||||
|
| log4jdbc.dump.sql.maxlinelength | SQL문의 최대 길이를 지정합니다. 이 속성은 SQL문을 자동 줄 바꿈하는 데 사용됩니다. 이 코드에서는 0으로 설정되어 있으므로 SQL문의 길이에 제한이 없습니다. | |
||||||
|
| log4jdbc.spylogdelegator.name | 로그4jdbc에서 사용할 로그 델리게이트(Delegate)의 이름을 지정합니다. 이 구성을 통해 로그 델리게이트를 변경할 수 있습니다. 이 코드에서는 SLF4J를 사용하는 net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator가 지정되어 있습니다. | |
||||||
|
| log4jdbc.dump.sql.maxlinelength | SQL문의 최대 길이를 지정합니다. 이 속성은 SQL문을 자동 줄 바꿈하는 데 사용됩니다. 이 코드에서는 0으로 설정되어 있으므로 SQL문의 길이에 제한이 없습니다. | |
||||||
|
| log4jdbc.auto.load.popular.drivers | 자주 사용되는 드라이버를 자동으로 로드할지 여부를 지정합니다. 이 코드에서는 true로 설정되어 있습니다. | |
||||||
|
| log4jdbc.trim.sql.enabled | SQL 문의 앞뒤 공백을 자동으로 제거할지 여부를 지정합니다. 이 코드에서는 true로 설정되어 있습니다. | |
||||||
|
| log4jdbc.trim.sql.extrablanklines | SQL 문의 공백 라인을 제거할지 여부를 지정합니다. 이 코드에서는 false로 설정되어 있습니다. | |
||||||
|
| log4jdbc.suppress.generated.keys.exception | SQL 문에서 생성된 키 예외를 억제할지 여부를 지정합니다. 이 코드에서는 false로 설정되어 있습니다. |
@ -0,0 +1,65 @@ |
|||||||
|
package kr.co.palnet.kac.app.config; |
||||||
|
|
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties; |
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings; |
||||||
|
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; |
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||||
|
import org.springframework.boot.jdbc.DataSourceBuilder; |
||||||
|
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.context.annotation.Primary; |
||||||
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; |
||||||
|
import org.springframework.orm.jpa.JpaTransactionManager; |
||||||
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; |
||||||
|
import org.springframework.transaction.PlatformTransactionManager; |
||||||
|
|
||||||
|
import javax.sql.DataSource; |
||||||
|
import java.util.Map; |
||||||
|
import java.util.Objects; |
||||||
|
|
||||||
|
@Configuration |
||||||
|
@EnableJpaRepositories( |
||||||
|
basePackages = "kr.co.palnet.kac.data.*.repository", |
||||||
|
entityManagerFactoryRef = "kacEntityManagerFactory", |
||||||
|
transactionManagerRef = "kacTransactionManager" |
||||||
|
) |
||||||
|
public class KacJpaConfig { |
||||||
|
|
||||||
|
private final JpaProperties jpaProperties; |
||||||
|
private final HibernateProperties hibernateProperties; |
||||||
|
|
||||||
|
public KacJpaConfig(JpaProperties jpaProperties, HibernateProperties hibernateProperties) { |
||||||
|
this.jpaProperties = jpaProperties; |
||||||
|
this.hibernateProperties = hibernateProperties; |
||||||
|
} |
||||||
|
|
||||||
|
@Bean(name = "kacDataSource") |
||||||
|
@Primary |
||||||
|
@ConfigurationProperties(prefix = "spring.datasource.pav-kac") |
||||||
|
public DataSource kacDataSource() { |
||||||
|
return DataSourceBuilder.create().build(); |
||||||
|
} |
||||||
|
|
||||||
|
@Bean(name = "kacEntityManagerFactory") |
||||||
|
@Primary |
||||||
|
public LocalContainerEntityManagerFactoryBean kacEntityManagerFactory(EntityManagerFactoryBuilder builder) { |
||||||
|
Map<String, Object> prop = hibernateProperties.determineHibernateProperties( |
||||||
|
jpaProperties.getProperties(), |
||||||
|
new HibernateSettings() |
||||||
|
); |
||||||
|
|
||||||
|
return builder.dataSource(kacDataSource()) |
||||||
|
.properties(prop) |
||||||
|
.packages("kr.co.palnet.kac.data.**.model") |
||||||
|
.persistenceUnit("kac") |
||||||
|
.build(); |
||||||
|
} |
||||||
|
|
||||||
|
@Bean |
||||||
|
@Primary |
||||||
|
public PlatformTransactionManager kacTransactionManager(EntityManagerFactoryBuilder builder) { |
||||||
|
return new JpaTransactionManager(Objects.requireNonNull(kacEntityManagerFactory(builder).getObject())); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
spring: |
||||||
|
datasource: |
||||||
|
pav-kac: |
||||||
|
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy |
||||||
|
jdbc-url: jdbc:log4jdbc:mysql://localhost:13306/PAV_KAC?characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true |
||||||
|
username: kac |
||||||
|
password: palnet!234 |
@ -0,0 +1,32 @@ |
|||||||
|
spring: |
||||||
|
profiles: |
||||||
|
include: |
||||||
|
- database |
||||||
|
threads: |
||||||
|
virtual: |
||||||
|
enabled: true |
||||||
|
jpa: |
||||||
|
hibernate: |
||||||
|
ddl-auto: create |
||||||
|
naming: |
||||||
|
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl |
||||||
|
|
||||||
|
logging: |
||||||
|
level: |
||||||
|
com: |
||||||
|
zaxxer: |
||||||
|
hikari: INFO |
||||||
|
jdbc: |
||||||
|
audit: OFF |
||||||
|
resultset: OFF |
||||||
|
resultsettable: INFO #SQL 결과 데이터 Table을 로그로 남긴다. |
||||||
|
sqlonly: OFF #SQL만 로그로 남긴다. |
||||||
|
sqltiming: INFO #SQL과 소요시간을 표기한다. |
||||||
|
connection : OFF # 커넥션 확인가능 |
||||||
|
org: |
||||||
|
hibernate: |
||||||
|
SQL: DEBUG |
||||||
|
type: |
||||||
|
descriptor: |
||||||
|
sql: |
||||||
|
BasicBinder: TRACE |
@ -0,0 +1,2 @@ |
|||||||
|
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator |
||||||
|
log4jdbc.dump.sql.maxlinelength=0 |
Loading…
Reference in new issue