zoukankan      html  css  js  c++  java
  • 使用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.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>

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

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-entitymanager</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
            <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>2.7.7</version>
            </dependency>

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

    @Configuration
    public class EclipseLinkJpaConfiguration extends JpaBaseConfiguration {
        protected EclipseLinkJpaConfiguration(DataSource dataSource, JpaProperties properties, ObjectProvider<JtaTransactionManager> jtaTransactionManager) {
            super(dataSource, properties, jtaTransactionManager);
        }
    
        @Override
        protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
            return new EclipseLinkJpaVendorAdapter();
        }
    
        @Override
        protected Map<String, Object> getVendorProperties() {
            HashMap<String, Object> map = new HashMap<>();
            map.put(PersistenceUnitProperties.WEAVING, true);
            map.put(PersistenceUnitProperties.DDL_GENERATION, "drop-and-create-tables");
            return map;
        }
    }
  • 相关阅读:
    模型命名规范
    Jquery 将表单序列化为Json对象
    Failed to read auto-increment value from storage engine错误的处理方法
    css样式表中设置table的第一列的宽度是固定值
    thinkphp中I("parm")用法的注意事项
    获取凌晨00:00:00的时间
    php empty()和isset()的区别
    react续集
    react的笔记整理
    vuex
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/13086635.html
Copyright © 2011-2022 走看看