Spring的Hibernate模板有哪些替代方案?

时间:2014-06-27 05:10:26

标签: spring hibernate

由于不再推荐使用Spring的Hibernate模板,我们使用普通的基于休眠的DAOS。

但是Spring的Hibernate模板用于提供许多方便的查找器方法等。

如果我们不使用Spring的Hibernate模板,我们会丢失这些功能。

Spring的Hibernate模板还有其他选择吗?

3 个答案:

答案 0 :(得分:1)

Spring + JPA + Hibernate(JPA是Hibernate和其他框架实现的规范)是旧Hibernate模板的一个很好的替代品,你应该试一试

当然,你有其他选择,但考虑到你已经知道Hibernate,JPA似乎是一个很自然的选择。

答案 1 :(得分:0)

如果您已经熟悉Hibernate,那么它将尝试整合任何其他ORM。我将Hibernate 4用于我的项目,并发现它在90%的常见任务中相当灵活。我将简要介绍一下为什么我喜欢Hibernate,而不是使用JDBC模板或者回到石器时代并进行普通的JDBC访问。

临' S:

  • 您可以使用JPA注释将对象直接映射到表格上。

  • 在Spring应用程序上下文中高度可配置。可以通过XML或Java代码进行配置。

  • Hibernate透明地管理您的事务会话,回滚和对象持久性。

  • 用于数据库操作的优秀API。

  • 提供大量文档。 Hibernate文档具有相当高的标准,即使找到你想要的东西也很棘手。

  • 便携式,您可以丢弃Oracle数据库并转移到MySQL数据库,而无需更改任何代码。

精读' S:

  • 很多旧教程(对于Hibernate 3)可能会令人困惑。

  • 大量旧文档(对于Hibernate 3)可能会妨碍尝试找到问题的解决方案。

  • 学习如何应用Criteria API构建自定义复杂查询所需的时间成本相对较高。

  • 让对象关系正常工作的痛苦(但一旦你理解了关系如何运作起来相当直接)

我个人认为,如果您熟悉Hibernate模板,那么尝试集成另一个ORM会很愚蠢。有可能这样做,但我想你已经有了现有系统的Spring配置。

在一个无耻的自我推销行为中,查看这些Q& A我写的关于configuring Hibernate 4 with Springmapping relationships on objects的注释

答案 2 :(得分:0)

在我的项目中,我们使用Spring数据+ Hibernate注释的组合。 http://projects.spring.io/spring-data-jpa/

这是一个例子:

       @Repository
     public interface InformCandidacyRepository extends CrudRepository<InformCandidacy, Integer> {

            List<EvaluationCandidacy> findByCandidacyPublicProcurementId(Integer publicProcurementId);

            InformCandidacy findByCandidacyId(Integer id);

     }

通过注释完成hibernate映射

              @OneToOne
              @JoinColumn(name = "candidacy_id", nullable = false, insertable = false, updatable = false)
              @Getter
              @Setter
              private Candidacy candidacy;


              @OneToOne(orphanRemoval = true, optional = true, cascade = {CascadeType.ALL}, mappedBy = "candidacy")
              @XmlElement
              @Getter
              @Setter
              private InformCandidacy informCandidacy;