使用Spring Data JPA持久化数据

  Spring Data是一个非常大的伞形项目,由多个子项目组成,其中大多数子项目都关注对不同的数据库类型进行数据持久化。比较流行的几个Spring Data项目包括:

  • Spring Data JPA:基于关系型数据库进行JPA持久化。
  • Spring Data MongoDB:持久化到Mongo文档数据库。
  • Spring Data Neo4j:持久化到Neo4j图数据库。
  • Spring Data Redis:持久化到Redis key-value 存储。
  • Spring Data Cassandra:持久化到Cassandra数据库。

  Spring Data为所有项目提供了一项最有趣且最有用的特性,就是基于repository规范接口自动生成repository的功能。

⒈添加Spring Data JPA到项目中

  Spring Boot应用可以通过JPA starter来添加Spring Data JPA。这个starter依赖不仅会引入Spring Data JPA,还会传递性地将Hibernete作为JPA实现引入进来。

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jpaartifactId>
        dependency>

使用Spring Data JPA持久化数据_第1张图片

  如果你想要使用不同的JPA实现,那么至少需要将Hibernete依赖排除出去并将你所选择的JPA库包含进来。举例来说,如果想要使用EclipseLink来替代Hibernete,就需要像这样修改构建文件:

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jpaartifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.hibernategroupId>
                    <artifactId>hibernate-entitymanagerartifactId>
                exclusion>
                <exclusion>
                    <groupId>org.hibernategroupId>
                    <artifactId>hibernate-coreartifactId>
                exclusion>
            exclusions>
        dependency>

        <dependency>
            <groupId>org.eclipse.persistencegroupId>
            <artifactId>eclipselinkartifactId>
            <version>2.7.7version>
        dependency>

  需要注意,根据你所选择的JPA实现,这里还需要其他的配置,你可以参照此文章作为参考。https://www.baeldung.com/spring-eclipselink

@Configuration
public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {
    protected EclipseLinkJpaConfiguration(DataSource dataSource, JpaProperties properties, ObjectProvider jtaTransactionManager) {
        super(dataSource, properties, jtaTransactionManager);
    }

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        return new EclipseLinkJpaVendorAdapter();
    }

    @Override
    protected Map getVendorProperties() {
        HashMap map = new HashMap<>();
        map.put(PersistenceUnitProperties.WEAVING, true);
        map.put(PersistenceUnitProperties.DDL_GENERATION, "drop-and-create-tables");
        return map;
    }
}

 

你可能感兴趣的:(使用Spring Data JPA持久化数据)