2017-03-10 6 views
0

私は@EntitySpring JPAでDDL(Spring-Bootなし)が行われないようにする方法

による注釈付きクラスが含まれていcom.mycompany.databaseutilities.model次のデータベース設定

@Configuration 
@EnableJpaRepositories("com.mycompany.databaseutilities.repo") 
@ImportResource("classpath:data_source.xml") 
public class DataConfig { 

    @Autowired 
    DataSource dataSource; 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     LocalContainerEntityManagerFactoryBean ans = 
     new LocalContainerEntityManagerFactoryBean(); 
     ans.setDataSource(dataSource); 
     ans.setJpaVendorAdapter(jpaVendorAdapter()); 
     ans.setPackagesToScan("com.mycompany.databaseutilities.model"); 
     return ans; 
    } 

    @Bean 
    public JpaVendorAdapter jpaVendorAdapter() { 
     HibernateJpaVendorAdapter ans = new HibernateJpaVendorAdapter(); 
     ans.setShowSql(false); 
     ans.setGenerateDdl(false); // is this sufficient? 
     ans.setDatabase(Database.MYSQL); 
     return ans; 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager() { 
     JpaTransactionManager ans = new JpaTransactionManager(); 
     ans.setEntityManagerFactory(entityManagerFactory().getObject()); 

     return ans; 
    } 
} 

パッケージには、私はそれがすべてのDDL文を実行しないであろうことを、確認することができますか?持っていますか私は既存のデータベースを傷つけたくありません。

+1

spring.jpa.hibernate.ddl-オート=更新 –

+1

/アプリケーションのDBユーザーにDDL権限を与えてはいけませんスキーマ、そしてあなたは安全です。 –

+0

@KumaresanPerumalどこにこれを書いていますか?私は設定ファイルを持っていません。 – Dims

答えて

0

スプリングブートapplication.propertiesまたはapplication.yamlファイルでspring.jpa.hibernate.ddl-autoプロパティを指定できます。

ます。また、プロパティを供給することによって、あなたのLocalContainerEntityManagerFactoryBeanを作成する時にこれを指定することができます

final Properties jpaProperties = new Properties(); 
jpaProperties.put(AvailableSettings.HBM2DDL_AUTO, "false"); 

entityManagerFactoryBean.setJpaProperties(jpaProperties); 
関連する問題