我正在使用Dropwizard框架(版本0.7.0)构建一个web服务。它涉及到对数据库执行一些只读查询,操作结果集,然后返回该数据集。我使用MySQL作为数据库引擎。因为我是这个框架的新手,所以我想知道我应该选择哪个选项: Hibernate还是JDBI。
发布于 2014-10-21 01:50:18
这两个我都用过了。我在Grails和传统的Spring应用程序中使用过Hibernate和GORM,还在Dropwizard中使用过JDBI。
我真的很喜欢JDBI的简单性,下面是我更喜欢它而不是Hibernate的几个原因。
我确切地知道要执行什么来获取我请求的数据。使用Hibernate,您有时必须对HQL进行大量处理,并将对象配置为您想要返回的内容。您最终求助于SQL语言,但是很难将结果正确地映射回域对象,或者您放弃了,让hibernate逐个获取它们。
特别是对于你的情况,听起来你想要一些轻量级的东西,因为你没有太多的用例,在我看来,这肯定是JDBI而不是Hibernate。
发布于 2014-10-19 12:34:01
实际上,这两种解决方案都是“锁定”的。
如果您希望使用持久化模型类型接口,那么可以针对JPA (如果您确定它只返回到关系数据库)或JDO (如果您可能希望返回到关系数据库和其他类型的数据库,如无SQL运动)编写代码。这是因为使用这两种解决方案中的任何一种,当出现问题时,您可以切换持久性提供程序,而无需重写大量代码。
如果您想使用过程化持久性模型(直接处理SQL查询等),那么可以使用JDBi,甚至可以使用JDBC。JDBi在JDBC上提供了一个非常好的抽象;但是,在某些情况下,您需要较低级别的访问权限(出于性能原因,您需要同时调优查询和数据库)。同样,JDBC是一种标准,您可以轻松地将一个数据库换到另一个数据库;但是,SQL本身就不那么容易换出了。
要解决SQL交换问题,我建议使用属性文件集来保存查询,然后使用资源加载器类型mechanisim将正确数据库的SQL绑定到代码。它不是100%万无一失的;但它确实能让你走得更远。
现在,如果你问我会用什么,我强烈推荐JDO。
发布于 2014-10-19 12:24:02
如果您在数据库上工作很少,那么可以使用JDBI,否则就使用Hibernate,因为它非常强大,并且为您的持久性逻辑提供了许多附加特性。
https://stackoverflow.com/questions/26445483
复制相似问题