Skip to content

Commit a539a24

Browse files
committed
config[db]: 다중 DB 설정
1 parent aa4bdd1 commit a539a24

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.ai.lawyer.global.config;
2+
3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.boot.jdbc.DataSourceBuilder;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.context.annotation.Primary;
8+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
9+
import org.springframework.orm.jpa.JpaTransactionManager;
10+
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
11+
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
12+
import org.springframework.transaction.PlatformTransactionManager;
13+
14+
import javax.sql.DataSource;
15+
import java.util.HashMap;
16+
17+
@Configuration
18+
@EnableJpaRepositories(
19+
basePackages = "com.ai.lawyer.domain.*",
20+
entityManagerFactoryRef = "dataEntityManager",
21+
transactionManagerRef = "dataTransactionManager"
22+
)
23+
public class DataDBConfig {
24+
25+
@Value("${spring.datasource.url}")
26+
private String url;
27+
@Value("${spring.datasource.username}")
28+
private String username;
29+
@Value("${spring.datasource.password}")
30+
private String password;
31+
@Value("${spring.datasource.driver-class-name}")
32+
private String driver;
33+
34+
@Bean
35+
@Primary
36+
public DataSource dataDBSource() {
37+
return DataSourceBuilder.create()
38+
.url(url)
39+
.username(username)
40+
.password(password)
41+
.driverClassName(driver)
42+
.build();
43+
}
44+
45+
@Bean
46+
@Primary
47+
public LocalContainerEntityManagerFactoryBean dataEntityManager() {
48+
49+
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
50+
51+
em.setDataSource(dataDBSource());
52+
em.setPackagesToScan(new String[]{"com.ai.lawyer.domain.*"});
53+
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
54+
55+
HashMap<String, Object> properties = new HashMap<>();
56+
properties.put("hibernate.hbm2ddl.auto", "update");
57+
properties.put("hibernate.show_sql", "true");
58+
properties.put(
59+
"hibernate.physical_naming_strategy",
60+
"org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy"
61+
);
62+
63+
em.setJpaPropertyMap(properties);
64+
65+
return em;
66+
}
67+
68+
@Bean
69+
@Primary
70+
public PlatformTransactionManager dataTransactionManager() {
71+
72+
JpaTransactionManager transactionManager = new JpaTransactionManager();
73+
74+
transactionManager.setEntityManagerFactory(dataEntityManager().getObject());
75+
76+
return transactionManager;
77+
}
78+
79+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.ai.lawyer.global.config;
2+
3+
import org.springframework.boot.autoconfigure.batch.BatchDataSource;
4+
import org.springframework.boot.context.properties.ConfigurationProperties;
5+
import org.springframework.boot.jdbc.DataSourceBuilder;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
9+
import javax.sql.DataSource;
10+
11+
@Configuration
12+
public class MetaDBConfig {
13+
14+
@Bean
15+
@BatchDataSource
16+
@ConfigurationProperties(prefix = "spring.datasource-meta")
17+
public DataSource metaDBSource() {
18+
return DataSourceBuilder.create().build();
19+
}
20+
21+
}

0 commit comments

Comments
 (0)