Java - JDBC 替代方案

66

这只是理论问题。

我在Java应用程序中使用JDBC来使用数据库(选择,插入,更新,删除等)。我手动创建Java类,这些类将包含来自DB表的数据(属性= db列)。然后我进行查询(ResultSet)并填充这些类别的数据。我不确定这是否是正确的方式。

但我已经阅读了很多关于JDO和其他持久性解决方案的文章。

请问有人可以基于他们的经验推荐最佳的JDBC替代方案吗?

我还想了解JDO相对于JDBC的优势(用简单的语言解释)。

我已经通过谷歌检索到了很多这方面的东西,但来自“第一手”的意见总是最好的。

谢谢

15个回答

1
一个新的、令人兴奋的选择是GORM,它是来自Grails的ORM实现。现在可以独立使用了。 在底层,它使用Hibernate,但是在顶部提供了一个很好的层,具有很酷的动态查找器等功能。

1
在底层,它使用Hibernate和Spring。 - duffymo

1

所有这些不同的抽象层最终都使用JDBC。整个想法是自动化一些繁琐和容易出错的工作,就像编译器自动化编写程序中的许多繁琐工作一样(调整数据结构大小-没问题,只需重新编译)。

然而,请注意,为了使它们起作用,您需要遵守一些假设。这些通常是合理的,并且非常容易处理,特别是如果您从Java方面开始,而不是必须使用现有数据库表。

JDO是各种项目在单个Sun标准中汇聚的产物,我建议您学习它。对于实现,选择您喜欢的IDE在其各种向导中建议的那个。


1

还有一个叫做Torque(http://db.apache.org/torque/)的工具,我个人更喜欢它,因为它更简单,而且正好满足我的需求。

使用Torque,我可以定义一个MySQL数据库(我使用PostgreSQL,但也支持MySQL),然后Torque可以查询数据库并为数据库中的每个表生成Java类。使用Torque,您可以查询数据库并返回正确类型的Java对象。

Torque支持where子句(可以使用Criteria对象或自己编写SQL)和连接。

它还支持外键,因此如果您有一个用户表和一个房屋表,其中一个用户可以拥有0个或多个房屋,则用户对象上将有一个getHouses()方法,该方法将为您提供用户拥有的房屋对象列表。

如果您想要了解可以编写的代码类型,请查看http://db.apache.org/torque/releases/torque-3.3/tutorial/step5.html,其中包含示例,展示如何使用torque加载/保存/查询数据。(此示例中使用的所有类都是基于数据库定义自动生成的)。


0

我建议使用Hibernate,它是连接数据库的一种非常棒的方式。虽然早期存在一些问题,但后来变得更加稳定。

它使用基于ORM的映射,可以在很大程度上减少编写查询的时间,并允许以最小的努力更改数据库。

如果您需要任何基于视频的教程,请告诉我,我可以将其上传到我的服务器并发送链接给您。


-1

使用Hibernate作为独立的JAR文件,然后将其分发到不同的Web应用程序中。这是目前最好的解决方案。您必须设计您的类、接口和枚举来执行抽象DAO模式。只要您拥有正确的实体和映射,您就只需要使用对象(实体),而不是HSQL。


没有事实证明这是“最好的解决方案”。 - Woot4Moo
@Woot4Moo - 这个问题的所有方面都有点糟糕。你应该专注于标记主观的“什么是最好的/推荐我”问题以便关闭它们。 - Kev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接