在上一篇博客《Spring MVC 连接 MySQL 数据库 Hibernate》中介绍了在 Spring MVC 中使用 Hibernate 来链接数据库,虽然比 JDBC 方便了很多,但复杂一些的查询还是很麻烦,有没有更方便的方法?当然有,在 Java EE 5 规范中已经提出的 Java 持久化接口 Java Persistence API 简称 JPA。它吸取了目前 Java 持久化技术的优点,旨在规范、简化 Java 对象的持久化工作。JPA 的宗旨是为 POJO 提供持久化标准规范,并不是依赖于某一个ORM框架,Hibernate3.2+、TopLink 10.1.3 以及 OpenJPA 都提供了 JPA 的实现。JPA 的总体思想和现有 Hibernate、TopLink、JDO等ORM框架大体一致。主要提供:ORM 映射元数据、操作实体对象 API、查询语言。
在 Spring 2.0.1 中,正式提供对 JPA 的支持。Spring 使得 JPA 配置变得更加灵活,将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建、事务处理等 JPA 相关的处理。Spring Data JPA 则更进一步,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,通过规范方法的名字,根据符合规范的名字来确定方法需要实现什么样的逻辑,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!
JPA 只是一种规范,需要 Provider 来实现其功能的,Hibernate 就是 JPA Provider 中很强的一个,从功能上来说,JPA 就是 Hibernate 功能的一个子集。Hibernate 从3.2开始,就开始兼容 JPA。我们还是通过项目来学习简单的 JPA 操作,还是可以使用上次的 spring-mvc-mysql 项目稍作修改,不过改成用 Hibernate 分支。
pom.xml
添加 spring-data-jpa
Dao
在 com.aidansu.demo.dao 包下创建 UserRepository 类,并把其余的类删除
DataBaseConfig
修改数据库配置类,类名上面添加以下注解
把原来的 sessionFactory() 和 transactionManager() 方法修改成下面的方法
Service
修改业务层的调用,把 UserServiceImpl 实现类改成如下:
通过简单的修改,就可以使用 JPA 提供的各种方法。发现项目中再也没有 SQL 语句了,持久化层更加简单了。
Run
需要在 Tomcat 容器上运行,点击 Run,服务器就会启动在 http://localhost:8080 端口上。
本次项目 spring-mvc-mysql 的项目代码已经放在 github 上,有需要的同学可以下载查看。地址: https://github.com/aidansu/spring-mvc-mysql/tree/JPA 分支 JPA
想了解更多关于 Spring Data JPA 框架信息的可以查看最新的官方文档: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/
完!