使用deleteBy和removeBy之间的JpaRepository区别

时间:2015-12-13 03:37:48

标签: spring jpa spring-data

我一直在测试JpaRepository的删除功能,并有这个(简化的)界面:

@Repository
public interface BrowserInfoDao extends JpaRepository<BrowserInfo, String> {

    @Transactional
    public Integer deleteByClientGuidAndBrowserGuid(String clientGuid, String browserGuid);

    @Transactional
    public Integer removeByClientGuidAndBrowserGuid(String clientGuid, String browserGuid);

}

在我的测试中,我无法找到removeBy和deleteBy方法之间的任何行为差异。所以我的问题是这些之间有什么区别?是否有最佳实践理由使用一个而不是另一个?

注意:我使用Hibernate作为实现。

1 个答案:

答案 0 :(得分:5)

他们是一样的。选择哪一个取决于您的个人偏好。

有关详细信息,请参阅this。为了证明源代码是相同的,请查看PartTree,它定义了以下正则表达式模式以匹配这些删除查询:

private static final String DELETE_PATTERN = "delete|remove";
private static final Pattern PREFIX_TEMPLATE = Pattern.compile( //
        "^(" + QUERY_PATTERN + "|" + COUNT_PATTERN + "|" + DELETE_PATTERN + ")((\\p{Lu}.*?))??By");