spring Data家族给我们提供了一个现成的dao层框架,这里面有不同的项目,如Spring Data JPA, Spring Data Neo4j and Spring Data MongoDB,他们的共同特点是他们给我们提供了框架代码,不再需要我们自己去实现了。 【Spring Data JPA 入门实例】 Spring Data JPA 是 Spring 框架的一个模块,它简化了数据库访问层(DAO)的开发,通过提供自动化的 Repository 实现,使得开发者无需编写大量的 CRUD(创建、读取、更新、删除)代码。Spring Data JPA 基于 Java Persistence API (JPA) 和 Hibernate ORM,为多种数据库提供了统一的抽象层。 ### 一、概述 在传统的 DAO 层开发中,我们需要手动创建接口、抽象类以及具体的实现类,涉及增删改查和分页等通用功能。Spring Data JPA 提供了一种更高效的方式,它通过注解驱动和基于接口的 Repository 模式,自动生成对应的实体管理类,减少了手动编码的工作量。这使得开发者可以专注于业务逻辑,而不是重复的基础架构代码。 ### 二、配置 Maven 在 Maven 项目中,需要添加 Spring Data JPA 相关的依赖。在 `pom.xml` 文件中,除了 Spring 框架核心依赖,还需要添加 Spring Data JPA 和 Hibernate 的依赖。这里使用的是 Spring 3.1.1.RELEASE、Hibernate 3.6.10.Final 和 Spring Data JPA 1.0.3.RELEASE 版本。具体的依赖配置如下: ```xml <dependencies> <!-- Spring Core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring Web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring Data JPA --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${spring.data.version}</version> </dependency> <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <!-- ...其他相关依赖... --> </dependencies> ``` ### 三、配置持久化单元 持久化单元(Persistence Unit)在 JPA 中通常通过 `persistence.xml` 文件进行配置,包括数据库连接信息、实体类、JPA 属性等。在 Spring Data JPA 中,这些配置可以通过 Spring 的配置文件进行。 ### 四、配置 `applicationContext.xml` 文件 在 Spring 的配置文件中,需要配置 JPA 的数据源、事务管理器以及 Repository 扫描路径。例如: ```xml <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="packagesToScan" value="com.example.myapp.domain"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true"/> </bean> </property> <property name="jpaProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <jdbc:initialize-database data-source="dataSource"> <jdbc:script location="classpath:database-schema.sql"/> </jdbc:initialize-database> <context:component-scan base-package="com.example.myapp.repository"/> ``` 这里配置了数据源 `dataSource`,实体扫描包 `com.example.myapp.domain`,JPA 供应商为 Hibernate,并设置了日志显示 SQL。 ### 五、Spring Data JPA 详解 Spring Data JPA 的核心是 Repository 模式。开发者只需要定义一个接口,继承 `JpaRepository` 或 `PagingAndSortingRepository`,并指定实体类和主键类型,Spring 就会自动生成实现类,包含基本的 CRUD 方法。 例如,定义一个 `UserRepository` 接口: ```java public interface UserRepository extends JpaRepository<User, Long> { User findByUsername(String username); } ``` 这里的 `User` 是实体类,`Long` 是主键类型。Spring 会自动提供 `findAll()`, `save()`, `findById()` 等方法,并且 `findByUsername()` 是自定义的查询方法,无需编写实现。 ### 六、Spring Data JPA 1.1 新特性及分页介绍 Spring Data JPA 1.1 引入了一些新特性,例如增强的分页支持。使用 `Pageable` 接口可以实现高效的分页查询: ```java Page<User> users = userRepository.findAll(PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "username"))); ``` 这里 `PageRequest.of()` 创建了一个分页请求对象,包含当前页 `page`,每页大小 `size` 和排序规则 `Sort`。`userRepository.findAll()` 返回的是 `Page<User>` 类型,包含了分页数据和元信息。 总结来说,Spring Data JPA 提供了一种声明式的方式来处理数据访问,降低了与数据库交互的复杂性,提高了开发效率。通过简单的配置和接口定义,就能快速构建功能完备的数据访问层。

























剩余11页未读,继续阅读

- 濰2014-05-18没什么用啊
- lee11772013-10-11居然是word文档,我当源码下的,没什么价值
- 展S开K双Y翼2015-02-28是文档,用处不大。
- 狂奔的小丑2014-09-01一般化吧,用不上
- 小码哥的进阶2014-01-23非常不错 握紧

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 暑假电子商务实践报告.docx
- 如何做好项目管理-精选.ppt
- (源码)基于Spring Boot和Spring Cloud的分布式谷粒商城系统.zip
- 算法的概念优质课.pptx
- 中传传媒经济学硕士影视项目管理方向就业状况好不好.doc
- 专题讲座资料(2021-2022年)单片机红外线防盗报警系统课程设计.doc
- 合作开发贷款管理软件协议书.docx
- 项目管理项目变更控制表样本.doc
- Comsol锂离子电池仿真:方形电池充放电循环热仿真与流热耦合多物理场分析
- 鲁班软件安装消防培训.ppt
- 卫星图像处理流程.docx
- 某工程精装修项目管理成品保护控制标准.docx
- 霍尼韦尔智能家居系统的几大优势.pdf
- 深度学习-卷积神经网络算法简介.pdf
- 计算机大学生个人实习报告三篇范文.docx
- Android项目开发实训项目总结报告新.doc


