SpringData —— HelloWorld
SpringData 简介
优点
简化数据库访问,减少数据访问层的开发量。
支持的数据库类型
- 支持 NoSQL 存储,如
MongoDB
,Redis
。 - 支持关系型数据存储技术,如
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.jar
和 spring-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,以及出现的一些问题。
SpringData —— HelloWorld的更多相关文章
- SpringData——HelloWorld
1.背景 最开始了解SpringData的时候,以为他不就是ORM的一种实现方式嘛,还能有什么新的东西.从hibernate到ibatis.mybatis,也许他只不过是spring想整合一个更方便的 ...
- JPA + SpringData 操作数据库--Helloworld实例
前言:谈起操作数据库,大致可以分为几个阶段:首先是 JDBC 阶段,初学 JDBC 可能会使用原生的 JDBC 的 API,再然后可能会使用数据库连接池,比如:c3p0.dbcp,还有一些第三方工具, ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 1
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7703679.html ------------------------------------ ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7704914.html ------------------------------------ ...
- JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7718741.html ------------------------------------ ...
- JPA + SpringData 操作数据库 ---- 深入了解 SpringData
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7735616.html ------------------------------------ ...
- SpringData 基于SpringBoot快速入门
SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...
- 一篇 SpringData+JPA 总结
概述 SpringData,Spring 的一个子项目,用于简化数据库访问,支持 NoSQL 和关系数据库存储 SpringData 项目所支持 NoSQL 存储 MongDB(文档数据库) Neo4 ...
- (转)JPA + SpringData
jpa + spring data 约定优于配置 convention over configuration http://www.cnblogs.com/crawl/p/7703679.html 原 ...
随机推荐
- [翻译]理解Swift中的Optional
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你 ...
- Hadoop学习笔记—7.计数器与自定义计数器
一.Hadoop中的计数器 计数器:计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们通常可以在程序的某个位置插入计数器,用来记录数据或者进度的变化情况,它比日志更便利进行分析. ...
- New Career
Today I received the official confirmation letter with very good grade for the probation, it means t ...
- delegate、notification、KVO场景差别
delegate: 编译器会给出没有实现代理方法的警告 一对一 使用weak而不是assign,或者vc消失时置为nil 可以传递参数,还可以接收返回值 notification: 编译期无法排错 一 ...
- ie a absolute bug
给a设置position:absolute时,在IE下,尽管display:block;width:100%;height:100%,依然无法点击.但是加一个背景颜色就可以了.如果不需要背景,再把背景 ...
- iOS创建安全的单例
创建安全的单例 #import "Singleton.h" @implementation Singleton static Singleton* _instance = nil; ...
- web应用中使用JavaMail发送邮件
现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...
- Azure Service Febric 笔记:Web API应用
1.什么是Service Febric 贴一段微软官方的介绍 Service Fabric 是一种分布式系统平台,可让你轻松打包.部署和管理可缩放.可靠的微服务.Service Fabric 还解决了 ...
- [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹
摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...
- Android文件下载之进度检测
近期因为项目的需要,研究了一下Android文件下载进度显示的功能实现,接下来就和大家一起分享学习一下,希望对广大初学者有帮助. 先上效果图: 上方的蓝色进度条,会根据文件下载量的百分比进行加载,中部 ...