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

posted @ 2016-10-24 20:30  solverpeng  阅读(951)  评论(0编辑  收藏  举报