지대한
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