• 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,以及出现的一些问题。

  • 相关阅读:
    jQuery的平滑页面内锚定链接插件:$.smoothAnchor()
    分享10个超酷的jQuery动画教程
    jQuery技术在线小测试
    分享一个jQuery的小测验(Quiz)插件:jQuizzy
    (SqlServer)不公开存储过程sp_Msforeachtable与sp_Msforeachdb详解
    SQL Server实用操作小技巧集合
    如何加密和解密文件
    winform程序最小化到托盘后没法关机的解决方案
    SQL语句操作大全
    自定义事件
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5994459.html
Copyright © 2020-2023  润新知