SpringDataJpa中的事务

SpringDataJpa中的事务


前言

今天为大家分享:SpringDataJpa中的事务。

前面讲了SpringDataJpa自定义查询语句(JPQL),请查看博主的SpringDataJpa系列文章。欢迎关注!


操作单个对象的事务

Spring Data提供了默认的事务(Transactionality)处理方式,即所有的查询均声明为只读事务,对于持久化,更新
与删除对象声明为有事务。 参见org.springframework.data.jpa.repository.support.SimpleJpaRepository

@org.springframework.stereotype.Repository 
@Transactional(readOnly = true) 
public class SimpleJpaRepository implements JpaRepository, JpaSpecificationExecutor {
    ……
    @Transactional 
    public void delete(ID id) { 
        delete(findOne(id)); 
    }
    …… 
}

对于自定义的方法,如需改变spring data提供的事务默认方式,可以在方法上注解@Transactional声明,如下示例:

@Transactional 
@Modifying 
@Query("update Student s set s.studentName=?1 where s.studentId=?2") 
int setFixedStudentNameFor(String studentName,int studentId);

涉及多个Repository的事务处理

进行多个Repository操作时,也应该使它们在同一个事务中处理,按照分层架构的思想,这部分属于业务逻辑层,
因此,需要在Service层实现对多个Repository的调用,并在相应的方法上声明事务。

只要在方法的上面加上@Transaction 这个注解就可以轻轻松松的实现事务的操作了。不过这里有几点需要注意的是:

  • 这个注解实现的事务管理器是默认的,如果不想要默认是事务管理器,可以自己进行添加。
  • 事务的隔离级别也是可以自己设置的。
  • 事务的传播行为也是可以自己设置的

好了到这里也该结束了,各位要自己多动手才能学到真正的东西。加油各位


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


你可能感兴趣的:(SpringDataJpa系列,为霞而作)