仅对某些表使用 Hibernate 并将 Hibernate 与 NamedParameterJdbcTemplate 混合使用是否安全?

Is it safe to only use Hibernate for certain tables and mix Hibernate with NamedParameterJdbcTemplate?

我想逐渐将代码库过渡到 Hibernate(当前代码使用 Spring 的 NamedParameterJdbcTemplate)。

1) 只为某些表开始创建 @Entity Hibernate 并慢慢创建更多实体是否安全?

2) 还是 Hibernate 只支持“全有或全无”(即我不能让其他代码接触 Hibernate 使用的任何实体或表)?

正式是的,您当然可以同时使用 hibernate 和其他查询方法。

至于安全 - 这真的取决于你在做什么。我会担心您的数据发生变化。例如,如果你使用 hibernate 查询一个对象,然后用 Spring 修改底层的 table,hibernate 将不知道这个变化。也许在技术上不安全,但它是一个难以找出错误的秘诀。

Hibernate 不是 all-or-nothing 解决方案。您可以映射任意数量的表,并且仍然使用其他持久性框架。

只要事务在您的不同 DAO 中可见(例如共享数据库连接或使用 JTA 时),您应该只关心在执行本机查询之前刷新 EntityManager

但是当你是来自 Hibernate 的 运行 本机查询时,你需要注意 how the AUTO flush mode works