【问题标题】:Spring Hibernate and JDBC Template in a Single Project单个项目中的 Spring Hibernate 和 JDBC 模板
【发布时间】:2014-07-03 21:28:57
【问题描述】:

我们计划做的是我们想要一个项目,但想要使用三个不同的框架作品来收集,那么这是一个好主意还是可以实现?

我们已经用 spring 和 hibernate 构建了项目,但我们想用 jdbc 模板扩展它。

请指导常见问题,例如 -是否需要新的会话工厂? - 我们可以使用带有休眠注释的 pojos 和 jdbc 模板还是我们必须创建一个新的? - 如果平均每次有 500 个用户,这会不会造成性能问题?

提前致谢。

【问题讨论】:

    标签: java spring hibernate jdbctemplate


    【解决方案1】:

    在同一个应用程序中同时使用 ORM 和 JDBC 是合理的做法。 Hibernate 可以运行本机 SQL 查询,因此您可以根据自己的想法考虑将其作为替代方案。

    JDBC 不使用与 Hibernate 类似的会话工厂或实体管理器工厂。 JDBC 结果的缓存必须与 Hibernate 分开处理。

    Hibernate/JPA 注释将与 JDBC 查询无关,传递给查询的 RowMapper 控制如何填充 pojo。您可以重新使用 Hibernate 实体以由行映射器填充,但实际上您使用 JDBC 的原因是通过更扁平的对象获得更集中的结果,最终得到一组单独的 DTO。

    我不清楚你认为什么会损害这里的性能。 JDBC 在性能方面应该是对 Hibernate 的改进,尽管代价是业务逻辑分散在多个地方。棘手的部分可能是设置事务管理器,以便 JDBC 和 Hibernate 使用相同的事务,请参阅 this question

    【讨论】:

    • 嗨,Nathan,这真的可以理解,但我有一个疑问,关于 hibernate 的 POJO 中使用的映射是什么?如果我从休眠中获取一个对象,而使用 jdbc 模板获取另一个对象,我可以在彼此中设置该对象并可以使用它吗?这里休眠对象是持久的,而 jdbctemplate 不是,所以如果我在执行一些 CRUD 操作时将 jdbctemplate 对象设置为休眠对象,它会更改数据吗?
    • @commit:是的,您可能会在无意中更改数据。一种方法是另一层 dto,或者将另一种方法从休眠实体复制到 jdbc 创建的实体。设置一个只读事务可能也会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2017-08-08
    • 1970-01-01
    • 2012-12-15
    • 2019-01-25
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多