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+ }
0 commit comments