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

  • 相关阅读:
    Linux下运行java项目
    Matlab 绘图完整入门
    Matlab命令合集 妈妈再也不用担心我不会用matlab了
    详尽全面的matlab绘图教程
    拉格朗日乘子法 那些年学过的高数
    【转】几款网络仿真软件的比较
    正则表达式30分钟入门教程 ——堪称网上能找到的最好的正则式入门教程
    并发编程详细整理
    高并发通信模型NIO
    Java并发编程的艺术笔记(九)——FutureTask详解
  • 原文地址:https://www.cnblogs.com/solverpeng/p/5994459.html
Copyright © 2011-2022 走看看