使用Hibernate持久性提供程序和设置javax.Persistence.schema-generation属性的Spring JPA
我使用SpringJPA,Hibernate作为持久性提供者,Derby作为数据库。(具体来说,JAR的版本是Spring版本4.3.4、Hibernate实体管理器版本5.2.10和Derby 10.13.1.1) 我想检查一下正确的方法使用Hibernate持久性提供程序和设置javax.Persistence.schema-generation属性的Spring JPA,spring,hibernate,jpa,derby,Spring,Hibernate,Jpa,Derby,我使用SpringJPA,Hibernate作为持久性提供者,Derby作为数据库。(具体来说,JAR的版本是Spring版本4.3.4、Hibernate实体管理器版本5.2.10和Derby 10.13.1.1) 我想检查一下正确的方法 JPA属性中的架构生成 如何使用步骤1生成的模式创建数据库模式 (注意,这不是Spring启动应用程序。) 我的应用程序配置文件如下: <context:annotation-config /> <context:component-sca
<context:annotation-config />
<context:component-scan base-package="org.service"/>
<context:component-scan base-package="org.repository"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan">
<array>
<value>org.model</value>
<value>org.repository</value>
<value>org.service</value>
</array>
</property>
<property name="dataSource" ref="dataSource"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DerbyTenSevenDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">none</prop>
</props>
</property>
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider"></bean>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource"/>
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="url" value="jdbc:derby:C:\\tmp\\testdb"/>
<property name="username" value="test"/>
<property name="password" value="test"/>
</bean>
<jpa:repositories base-package="org.repository"></jpa:repositories>
org.model
org.repository
组织服务
org.hibernate.dialogue.derbytensevendialogue
假的
假的
没有一个
对于步骤(1),我的调查和测试表明,可以在JPAPProperties属性内设置持久性模式生成,如下所示:
<prop key="javax.persistence.schema-generation.scripts.action">create</prop>
<prop key="javax.persistence.schema-generation.scripts.create-target">create.sql</prop>
创建
create.sql
这将生成一个create.sql文件。对于步骤(2),我使用
脚本
create.sql
创造
但是,我仍然需要在URL jdbc:derby:C:\tmp\testdb中设置create=true吗?上面的javax.persistence.schema-generation行是否假设数据库已经创建 我可以通过命令行和Derby创建数据库,例如java-Dij.database=jdbc.Derby:C:\tmp\testdb;create=true org.apache.derby.tools ij。我想检查模式生成是否仅限于在创建数据库后创建模式;Derby允许您连接到已经存在的数据库,即使您在JDBC连接URL中指定了
create=true
。可以将其视为“如果不存在则创建”。@BryanPendleton create=true的使用如何处理javax.persistence.schema-generation?JPA是否只对模式的创建进行标准化?对不起,我对JPA了解不多。只是想帮我打德比。
<prop key="javax.persistence.schema-generation.create-source">script</prop>
<prop key="javax.persistence.schema-generation.create-script-source">create.sql</prop>
<prop key="javax.persistence.schema-generation.database.action">create</prop>