zoukankan      html  css  js  c++  java
  • SpringData —— HelloWorld

    SpringData 简介

    优点

    简化数据库访问,减少数据访问层的开发量。

    支持的数据库类型

    1. 支持 NoSQL 存储,如 MongoDB,Redis
    2. 支持关系型数据存储技术,如 jdbc,jpa

    HelloWorld

    Spring 配置

    配置 Spring 基本信息

    <!-- 配置要扫描的包 -->
    <context:component-scan base-package="com.solverpeng.sd"/>
    <!-- 配置数据源 -->
    <context:property-placeholder location="db.properties"/>
    <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
        <property name="user" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
    </bean>
    

    配置 Spring 整合 JPA

    <!-- 配置 JPA 的 EntityManagerFactory -->
    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
        <property name="dataSource" ref="dataSource"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
        </property>
        <!-- 替代 JPA 的 persistence.xml 扫描包下添加 @Entity 的实体类 -->
        <property name="packagesToScan" value="com.solverpeng.sd.bean"/>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>
    
    <!-- 配置事务管理器 -->
    <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>
    
    <!-- 配置注解支持 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    

    配置 Spring 整合 SpringData

    <!-- 配置 SpringData -->
    <jpa:repositories base-package="com.solverpeng.sd.repositories" entity-manager-factory-ref="entityManagerFactory"/>
    

    声明持久层的接口

    声明的持久层接口需要继承自 org.springframework.data.repository.Repository 接口,或者是该接口的子接口。

    在接口中声明方法

    public interface PersonRepository extends Repository<Person, Integer>{
        Person getByPersonName(String personName);
    }
    

    测试

    @org.junit.Test
    public void testRepository() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        PersonRepository personRepository = ctx.getBean(PersonRepository.class);
        String personName = "aa";
        Person person = personRepository.getByPersonName(personName);
        System.out.println(person);
    }
    

    测试出现的问题以及解决方案

    问题:src-resolve: 无法将名称 'repository:auditing-attributes' 解析为 'attribute group' 组件
    原因:spring-data-jpa-1.3.3.jarspring-data-commons-core-1.1.0.jar 不兼容导致。
    解决:将 spring-data-jpa-1.3.3.jar 更换为 spring-data-jpa-1.0.0.jar

    总结

    SpringData 是用了比 JPA 更加简洁的方式简化了开发,因为是建立在 JPA 的规范上,所以可以支持绝大多数的 ORM 框架,
    从 HelloWorld 中可以看出,主要要掌握的是如何在它接口中声明方法,声明该方法的规则是什么。同时本篇文章介绍了如何在 Spring 环境下集成 SpringData,以及出现的一些问题。

  • 相关阅读:
    指针传递的一些必要的记录,避免以后又忘记了。
    记录下这几个FMX控件的地址
    boost.ASIO-可能是下一代C++标准的网络库
    对本程序使用自己的代理服务器
    C# 为网络程序添加用户代理
    InternetOpen怎么使用代理
    改变代理服务器
    在Delphi中,关于数组名称
    Delphi 获取进程路径及命令行参数
    关于在asp.net的web页面中的全局变量问题
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5994459.html
Copyright © 2011-2022 走看看