hos*_*ude 5 java spring jpa spring-boot
上下文:使用Spring Boot 0.5.0-M7,MySQL和Commons DBCP,Java配置,@EnableAutoConfiguration设置.
我已经使用特定配置定义了应用程序的DataSourcebean,JpaVendorAdapterbean LocalContainerEntityManagerFactoryBean和TransactionManagerbean,以支持DBCP和一些Hibernate设置.在应用程序启动时,DataSource它肯定受到尊重(调试确认),但其他bean被忽略.这似乎是该JpaBaseConfiguration课程的结果,该课程由WebMvcConfiguration其中一个安全过滤器组成.在任何情况下,问题都在于Hibernate设置将hbm2ddl(模式导出)设置为drop-create,这样每次服务器重新启动时我都会丢失数据.
我仔细查看了源代码,发现似乎有可能设置环境变量,这些变量将被尊重JpaBaseConfiguration,但这似乎无法设置bean来完成同样的工作.我试图排除一些与数据相关的自动配置类无济于事.是否有其他期望设置非默认数据配置我可能会丢失?
当检测到hibernate(HibernateEntityManager)时,查看Spring Boot 0.5.0.M7的代码,LocalContainerEntityManagerFactoryBean默认情况下将始终配置Springs hibernate.您可以通过将它们放在application.properties中来覆盖某些属性.
spring.jpa.hibernate.naming-strategy- 将使用默认设置命名策略= ImprovedNamingStrategy.
spring.jpa.hibernate.ddl-auto - 将设置hibernate.hbm2ddl.auto default = create-drop.
您可以设置的常规JPA属性
spring.jpa.show-sql - 在日志中显示sqlspring.jpa.database-platform - 对于休眠,这是方言spring.jpa.database - 使用的数据库(不要与数据库平台一起使用!).spring.jpa.generate-ddl- 如果生成ddl,则默认为false(由spring.jpa.hibernate.ddl-auto属性覆盖)如果你想speficy一些没有默认属性前缀他们spring.jpa.properties那么他们将被添加到jpaProperties的LocalContainterEntityManagerFactoryBean.
包含HibernateJpaAutoConfiguration它与任何其他配置无关,它只是由检测到的某些类触发
@ConditionalOnClass({ LocalContainerEntityManagerFactoryBean.class,
EnableTransactionManagement.class, EntityManager.class,
HibernateEntityManager.class })
@ConditionalOnBean(DataSource.class)
@EnableTransactionManagement
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9576 次 |
| 最近记录: |