gpt4 book ai didi

spring - 如何使用 spring 数据和基于 java 的配置创建 ddl 文件?

转载 作者:行者123 更新时间:2023-12-01 11:50:11 25 4
gpt4 key购买 nike

我已经启动并运行了我的 spring 数据 JPA 配置。我想从我的注释实体中获取一个 ddl sql 文件

我知道这个问题已经被问过很多次了。但是我找不到有用的解释如何使用基于 java 的 spring 配置来做到这一点。

这是我的 JPA 设置:

@Bean(name = BEAN_ENTITY_MANAGER_FACTORY)
public EntityManagerFactory entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = createLocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setJpaVendorAdapter(jpaVendorAdapter());
em.setPersistenceUnitName(getPersistenceUnitName());
em.setPackagesToScan(getPackagesToScan());
processOptionalProperty(Environment.HBM2DDL_AUTO, em);
processOptionalProperty(HIBERNATE_JDBC_BATCH_SIZE, em);
processOptionalProperty(EHCACHE_CONFIGURATIONRESOURCENAME_PROPERTY, em);
em.afterPropertiesSet();
return em.getObject();
}

@Bean(name = BEAN_HIBERNATE_JPA_VENDOR_ADAPTER)
public HibernateJpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
adapter.setShowSql(Boolean.parseBoolean(getPropertyValue(HIBERNATE_SHOW_SQL_PROPERTY)));
adapter.setDatabasePlatform(getPropertyValue(HIBERNATE_DATABASE_PLATFORM_PROPERTY));
adapter.setGenerateDdl(true);
return adapter;
}

hbm2ddl 是这样设置的:

hibernate.hbm2ddl.auto=create

此配置会在应用程序启动时创建必要的数据库表。我怎样才能得到一个包含所有 ddl 命令的 sql 脚本来设置数据库?

最佳答案

经过大量谷歌搜索和尝试错误后,这是我找到的解决方案。

要生成 ddl 脚本,您需要 maven hibernate3:hbm2ddl plugin .为了获得插件,我将其添加到我的 pom.xml:

        <plugin>
<!-- run "mvn hibernate3:hbm2ddl" to generate a schema -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>jpaconfiguration</implementation>
</component>
</components>
<componentProperties>
<persistenceunit>eai</persistenceunit>
<outputfilename>ddl-file.sql</outputfilename>
<drop>false</drop>
<create>true</create>
<export>false</export>
<format>true</format>
</componentProperties>
</configuration>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
</dependencies>
</plugin>

最难找到的是依赖部分。谢谢to this blog post指出这一点。

我遇到的第二件事是持久性单元名称。这是通过将名为 persistence.xml 的文件放入您的 META-INF 目录来配置的。

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="eai">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
<!-- other properties ... -->
</properties>
</persistence-unit>
</persistence>

此文件还包含 hibernate 方言。这对于获得让您的数据库满意的 sql 很重​​要。

关于spring - 如何使用 spring 数据和基于 java 的配置创建 ddl 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com