我们有一个使用 JPA 和 Hibernate 4 for ORM 的 Java Spring 项目。我们专门使用 Java 配置,所以我们没有任何 hibernate.properties 或 persistence.xml 映射文件。
我们还使用 Spring 的 Jsr310JpaConverters 和一些自定义属性转换器实现javax.persistence.AttributeConverter
. 包扫描会自动拾取自定义转换器。
除此之外,我们的设置是相当标准的,基本上只是
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackageClasses = BasePackageMarker.class, repositoryBaseClass = InternalRepositoryImpl.class)
public class JpaConfig {
// values loaded from property file
public Properties jpaProperties() {
Properties jpaProperties = new Properties();
jpaProperties.setProperty(Environment.DIALECT, dialect);
jpaProperties.setProperty(Environment.HBM2DDL_AUTO, getHbm2ddlAuto());
// ...
return jpaProperties;
}
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setDriverClassName(driver);
config.setJdbcUrl(url);
config.setUsername(username);
config.setPassword(password);
// ...
return new HikariDataSource(config);
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setPackagesToScan(
BasePackageMarker.class.getPackage().getName(),
Jsr310JpaConverters.class.getPackage().getName()
);
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
entityManagerFactoryBean.setJpaProperties(jpaProperties());
return entityManagerFactoryBean;
}
// ...
}
我正在寻找一种方法来运行 Hibernate 的 SchemaExport 来创建我们的数据库模式,而无需运行 Tomcat 或 Spring 应用程序,其配置与使用 启动应用程序的配置相同hbm2ddl=create
,特别是查找所有实体类和属性转换器。我想用 Maven 运行它,但是一旦我知道从哪里开始,我就可以弄清楚这部分。
我为 Hibernate 3 或 XML 配置找到了许多过时的答案和库,似乎没有什么对我们的设置有用。我确定答案已经存在,但此时我很困惑,不知道该尝试什么。任何解决方案或指针?