由于不再推荐使用Spring的Hibernate模板,我们使用普通的基于休眠的DAOS。
但是Spring的Hibernate模板用于提供许多方便的查找器方法等。
如果我们不使用Spring的Hibernate模板,我们会丢失这些功能。
Spring的Hibernate模板还有其他选择吗?
答案 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 Spring和mapping 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;