Apache Open JPA和Spring JPA都是Java持久化API(Java Persistence API,JPA)的实现。他们之间的差异在于他们的发布者、支持网络和使用特性的选择。
Apache Open JPA是Apache Software Foundation赞助的项目,它由Apache提供支持,并且基于Apache许可证。相比之下,Spring JPA是由Spring Framework提供支持,并且最初发布在GNU Lesser General Public License之下。这个许可证只允许修改和分发源代码,而不在使用这个代码的应用程序中施加任何许可证限制。
那么,如何在应用程序中使用这些不同的JPA实现呢?下面的示例演示了在使用Spring JPA时如何配置JPA实体管理器。
@Configuration
@EnableJpaRepositories(basePackages = { "com.example.repository" })
@EntityScan(basePackages = { "com.example.entity" })
public class PersistenceConfig {
@Autowired
private DataSource dataSource;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("com.example.entity");
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
return em;
}
}
对于Apache Open JPA,应更改以下依赖项:
org.apache.openjpa
openjpa
3.0.0
并且以下是使用Apache Open JPA时的JPA实体管理器配置示例:
@Configuration
@EnableJpaRepositories(basePackages = "com.example.repository")
@EntityScan(basePackages = "com.example.entity")
public class PersistenceConfig {
@Autowired
private DataSource dataSource;
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("com.example.entity");
JpaVendorAdapter vendorAdapter = new OpenJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
Properties properties = new Properties();
properties.setProperty("openjpa.jdbc.SynchronizeMappings", "buildSchema");
em.setJpaProperties(properties);
return em;
}
}
注意,要使用Apache Open JPA,必
上一篇:ApacheOozie在启动过程中抛出ClassNotFoundException(org.apache.hadoop.conf.Configuration)。
下一篇:ApacheOpenWebBeansSEContainerthrowsUnsatisfiedResolutionException