首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate与JDBI

Hibernate与JDBI
EN

Stack Overflow用户
提问于 2014-10-19 07:09:15
回答 3查看 10K关注 0票数 10

我正在使用Dropwizard框架(版本0.7.0)构建一个web服务。它涉及到对数据库执行一些只读查询,操作结果集,然后返回该数据集。我使用MySQL作为数据库引擎。因为我是这个框架的新手,所以我想知道我应该选择哪个选项: Hibernate还是JDBI。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-21 01:50:18

这两个我都用过了。我在Grails和传统的Spring应用程序中使用过Hibernate和GORM,还在Dropwizard中使用过JDBI。

我真的很喜欢JDBI的简单性,下面是我更喜欢它而不是Hibernate的几个原因。

我确切地知道要执行什么来获取我请求的数据。使用Hibernate,您有时必须对HQL进行大量处理,并将对象配置为您想要返回的内容。您最终求助于SQL语言,但是很难将结果正确地映射回域对象,或者您放弃了,让hibernate逐个获取它们。

  1. 我不需要担心延迟/急切获取以及这将如何影响我在大型数据集上的查询时间。
  2. 映射并不复杂,因为您可以自己管理它们,并且不必依赖于获得注释和SQL的正确组合

特别是对于你的情况,听起来你想要一些轻量级的东西,因为你没有太多的用例,在我看来,这肯定是JDBI而不是Hibernate。

票数 23
EN

Stack Overflow用户

发布于 2014-10-19 12:34:01

实际上,这两种解决方案都是“锁定”的。

如果您希望使用持久化模型类型接口,那么可以针对JPA (如果您确定它只返回到关系数据库)或JDO (如果您可能希望返回到关系数据库和其他类型的数据库,如无SQL运动)编写代码。这是因为使用这两种解决方案中的任何一种,当出现问题时,您可以切换持久性提供程序,而无需重写大量代码。

如果您想使用过程化持久性模型(直接处理SQL查询等),那么可以使用JDBi,甚至可以使用JDBC。JDBi在JDBC上提供了一个非常好的抽象;但是,在某些情况下,您需要较低级别的访问权限(出于性能原因,您需要同时调优查询和数据库)。同样,JDBC是一种标准,您可以轻松地将一个数据库换到另一个数据库;但是,SQL本身就不那么容易换出了。

要解决SQL交换问题,我建议使用属性文件集来保存查询,然后使用资源加载器类型mechanisim将正确数据库的SQL绑定到代码。它不是100%万无一失的;但它确实能让你走得更远。

现在,如果你问我会用什么,我强烈推荐JDO。

票数 4
EN

Stack Overflow用户

发布于 2014-10-19 12:24:02

如果您在数据库上工作很少,那么可以使用JDBI,否则就使用Hibernate,因为它非常强大,并且为您的持久性逻辑提供了许多附加特性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26445483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档