Java-JDBC替代品
这只是理论问题。
我将JDBC与Java应用程序一起使用,以使用数据库(选择,插入,更新,删除等)。我制作了“手动” Java类,它将包含来自数据库表的数据(属性=
db列)。然后,我进行查询(ResultSet),并用数据填充这些类。我不确定这是否正确。
但是我已经阅读了很多有关JDO和其他持久性解决方案的信息。
有人可以根据他们的经验推荐最佳使用的JDBC替代品吗?
我还想知道JDO相对于JDBC的优势(简单来说)。
我已经可以在Google上搜索很多此类内容,但是“第一手资料”的观点总是最好的。
谢谢
回答:
Java中的数据库持久性故事已经很久了,而且充满曲折:
是 最终用来与数据库对话的低级API 。但是,如果不使用更高级别的API,则您必须自己完成所有繁琐的工作(编写SQL查询,将结果映射到对象等)。
是对更高级别的API的首次尝试,并且已被大型Java EE提供程序(BEA,IBM)成功采用,但未被用户采用。实体Bean太复杂且开销太大(理解,性能不佳)。
试图通过引入本地接口来降低Entity Bean的某些复杂性,但是大多数复杂性仍然存在。EJB 2.0也缺乏可移植性(因为对象关系映射不是规范的一部分,因此部署描述符是专有的)。
然后是 ,它 是 对象持久性的数据存储不可知标准(可以与RDBMS,OODBMS,XML,Excel,LDAP一起使用)。但是,尽管有几种开源实现,并且小型独立供应商采用了JDO(大多数OODBMS供应商希望JDO用户以后再从其RDBMS数据存储切换到OODBMS,但是显然这从未发生),但是它失败了被大型Java EE参与者和用户采用(因为编织是开发时的痛苦,并且使一些客户害怕奇怪的查询API,实际上太抽象了)。因此,尽管标准本身还没有失效,但我认为它是一个失败。
确实,尽管存在两个标准,但由于对象对关系数据库的持久性(标准之间的竞争,JDO的位置不明确,早期的失败),与EJB CMP和JDO相比,用户更喜欢使用诸如 ,旧播放器或 类的专有API 。我相信CMP和不良行销是其中的一部分责任),而Hibernate实际上已成为该领域事实上的标准(这是一个很好的开源框架)。
然后,Sun意识到他们必须简化事情(并且通常是整个Java EE),并且他们使用 (Java持久性API )在Java EE 5中完成了该工作,它是EJB 3.0的一部分,是对象到关系数据库持久性的新标准。 。JPA统一了EJB 2 CMP,JDO,Hibernate和TopLink API /产品,并且似乎在EJB CMP和JDO失败(易于使用和采用)的地方成功了。
总而言之,Java的 标准是 并且应该优先于其他专有API(使用Hibernate的JPA实现很好,但使用JPA
API),除非您不需要ORM。与JDBC相比,它提供了更高级别的API,旨在节省您大量的手工工作(这是简化的方法,但仅此而已)。
以上是 Java-JDBC替代品 的全部内容, 来源链接: utcz.com/qa/418797.html