Spring Data JPA 介绍和使用

本文参考了Spring Data JPA官方文档,引用了部分文档的代码。

Spring Data JPA是Spring基于Hibernate开发的一个JPA框架。如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架几乎能做的任何事情。下面来逐步介绍它的强大功能。

添加依赖

我们可以简单的声明Spring Data JPA的单独依赖项。以Gradle为例,依赖项如下,Spring Data JPA会自动添加它的Spring依赖项。当前版本需要Spring框架版本为4.3.7.RELEASE或更新,使用旧版本的Spring框架可能会出现bug。由于Spring Data JPA基于Hibernate,所以别忘了添加Hibernate的依赖项。

compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.11.1.RELEASE'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.2.8.Final'

基本使用

创建环境

Spring Data JPA也是一个JPA框架,因此我们需要数据源、JPA Bean、数据库驱动、事务管理器等等。下面以XML配置为例,我们来配置一下所需的Bean。重点在于<jpa:repositories base-package="yitian.study.dao"/>一句,它告诉Spring去哪里寻找并创建这些接口类。

<!--启用注解配置和包扫描-->
<context:annotation-config/>
<context:component-scan base-package="yitian.study"/>
<!--创建Spring Data JPA实例对象-->
<jpa:repositories base-package="yitian.study.dao"/>
<!--数据源-->
<bean id="dataSource"
      class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
    <property name="useSSL" value="false"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="user" value="root"/>
    <property name="password" value="12345678"/>
</bean>
<!--JPA工厂对象-->
<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="yitian.study.entity"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="true"/>
            <property name="showSql" value="true"/>
        </bean>
    </property>
</bean>
<!--事务管理器-->
<bean id="transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!--事务管理-->
<tx:advice id="transactionAdvice"
           transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="get*" read-only="true"/>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>
<aop:config>
    <aop:pointcut id="daoPointCut" expression="execution(* yitian.study.dao.*.*(..))"/>
    <aop:advisor advice-ref="transactionAdvice" pointcut-ref="daoPointCut"/>
</aop:config>

创建DAO对象

前几天学了一点Groovy,再回头看看Java,实在是麻烦。所以这里我用Groovy写的实体类,不过语法和Java很相似。大家能看懂意思即可。不过确实Groovy能比Java少些很多代码,对开发挺有帮助的。有兴趣的同学可以看看我的Groovy学习笔记

Groovy类的字段默认是私有的,方法默认是公有的,分号可以省略,对于默认字段Groovy编译器还会自动生成Getter和Setter,可以减少不少代码量。只不过equals等方法不能自动生成,多少有点遗憾。这里使用了JPA注解,建立了一个实体类和数据表的映射。

@Entity
class User {
    @Id
    @GeneratedValue
    
  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值