A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小刀葛小伦 黑马粉丝团   /  2017-9-6 17:42  /  1880 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

致正在路上行走的程序员:人生只有一条路不能选择——那就是放弃的路;人生只有一条路不能拒绝——那就是成长的路
一.什么是SpringDataJPA
  SpringData项目的目的是为了简化构建基于spring框架应用的数据访问技术,包括非关系型数据库,另外还包括对关系型数据库的访问支持。对于拥有海量的项目,可以用Spring Data来简化项目的开发,就如Spring Framework对JDBC、ORM的支持一样,Spring Data会让数据的访问变得更加方便
.Spring Data JPA有什么咋们主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念
1.Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别
2:CrudRepository :是Repository的子接口,提供CRUD的功能
3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能
4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
5:JpaSpecificationExecutor:用来做负责查询的接口
6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可
三.接下来.咋们来学习一下如何使用Spring Data JPA
1.需要先 下载Spring Data JPA 的发布包(需要同时下载 Spring Data Commons Spring Data JPA 两个发布包,Commons Spring Data 的公共基础包),并把相关的依赖 JAR 文件加入到 CLASSPATH 中。
2.让持久层接口 Dao(以OrderRepository)继JpaRepository 接口,(该接口使用了泛型,需要为其提供两个类型第一个为该接口处理的域对象类型,第二个为该域对象的主键类型
  3. Spring 配置文件中启用扫描并自动在数据库创建实体类对应的表,以及事物管理器<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <property name="driverClass" value="${jdbc.driver}" />
                <property name="jdbcUrl" value="${jdbc.url}" />
                <property name="user" value="${jdbc.user}" />
                <property name="password" value="${jdbc.password}" />
        </bean>
        <!-- 整合JPA配置 -->
        <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
                <property name="dataSource" ref="dataSource" />
                <property name="packagesToScan" value="cn.itcast.bos.domain" />
                <property name="persistenceProvider">
                        <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
                </property>
                <property name="jpaVendorAdapter">
                        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                                <property name="generateDdl" value="true" />
                                <property name="database" value="MYSQL" />
                                <property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
                                <property name="showSql" value="true" />
                        </bean>
                </property>
                <property name="jpaDialect">
                        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
                </property>
                <property name="jpaPropertyMap">
                        <map>
                                <entry key="hibernate.query.substitutions" value="true 1, false 0" />
                                <entry key="hibernate.default_batch_fetch_size" value="16" />
                                <entry key="hibernate.max_fetch_depth" value="2" />
                                <entry key="hibernate.generate_statistics" value="true" />
                                <entry key="hibernate.bytecode.use_reflection_optimizer"
                                        value="true" />
                                <entry key="hibernate.cache.use_second_level_cache" value="false" />
                                <entry key="hibernate.cache.use_query_cache" value="false" />
                        </map>
                </property>
        </bean>
        <!-- JPA事务管理器  -->
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
                <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
<!-- 注解管理事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 整合spring data jpa -->
        <jpa:repositories base-package="cn.itcast.bos.dao" />
</beans>
总结:
1.申明持久层的接口,让该接口继承JpaRepository他不包含任何方法,当然如果有需要Spring Data 也提供了若干 JpaRepository子接口,其中定义了一些常用的增删改查,以及分页相关的方法。
2.在接口中声明需要的业务方法。Spring Data 将根据给定的策略来为其生成实现代码。
3. Spring 配置文件中增加一行声明,让 Spring 为声明的接口创建代理对象配置了<jpa:repositories> 后,Spring 初始化容器时将会扫描 base-package 指定的包目录及其子目录,为继承 JpaRepository 或其子接口的接口创建代理对象,并将代理对象注册为 Spring Bean,业务层便可以通过 Spring 自动封装的特性来直接使用该对象。

评分

参与人数 1黑马币 +5 收起 理由
成都校区 + 5

查看全部评分

3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
疯狂的编程人生
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马