Spring

Spring database config bean 설정 예제 by JPA

curiousKidd 2024. 4. 4. 10:41
반응형

spring docs 안에서 제공해주는 설정 코드 입니다.
https://docs.spring.io/spring-data/jpa/reference/repositories/create-instances.html

@Configuration
@EnableJpaRepositories(
    basePackages = {"com.~~~repository path"},
    transactionManagerRef = "",
    entityManagerFactoryRef = ""
)
@EnableTransactionManagement
class ApplicationConfig {

  @Bean
  public DataSource dataSource() {

    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
    return builder.setType(EmbeddedDatabaseType.HSQL).build();
  }

  @Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(true);

    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("com.acme.domain");
    factory.setDataSource(dataSource());
    return factory;
  }

  @Bean
  public PlatformTransactionManager transactionManager(
                  EntityManagerFactory entityManagerFactory) {

    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(entityManagerFactory);
    return txManager;
  }
}

 

 

entityManagerFactory의 경우는 이런 방식으로도 사용됩니다.

public LocalContainerEntityManagerFactoryBean entityManagerFactory(
            EntityManagerFactoryBuilder builder,
            DataSource dataSource) {
        return builder
                .dataSource(dataSource)
                .packages("com.~~~packagesPath")
                .persistenceUnit("Key 값으로 사용하고싶은 명칭")
                .build();
}

public PlatformTransactionManager transactionManager(
            EntityManagerFactory entityManagerFactory) {
        return new JpaTransactionManager(entityManagerFactory);
}
반응형