Java 中访问数据库的不同方式

Different ways to access database in Java

使用 Java 访问数据的技术有很多。 我正在阅读其中的一些内容,包括:

现在我真的因为开销而感到困惑。这些技术之间的主要区别和相似之处是什么?哪些是最常用的?简短比较非常受欢迎。

Java 中数据库访问的基础是 JDBC。它是一个接口(无实现),允许数据库供应商以标准方式公开他们的数据库,因此 Java 程序员不必从根本上改变他们的代码来支持不同的关系数据库。

也就是说,它接受 SQL,并且 SQL 是标准的,有太多变体,以至于标准不允许跨数据库可移植性。

其他平台倾向于在 JDBC 的基础上构建,以降低与其他数据库集成的成本。与数据库交互的方式多种多样,基本上你可以通过发出 SQL 命令得到改进,或者附加库会为你编写兼容的 SQL 命令。

两大类是"database like"和"object storage",其中对象存储专注于你存储一个Java对象,而库负责[=38的大部分细节=]一代.

Technology                 / query language / type         / notes

Java Persistance API       / JPQL           / object store / not an implementation, but an interface allowing multiple implementations, query language is not table specific, but object specific
Hibernate                  / HQL            / object store / a popular Java solution, but tied to Hibernate only.
Java Persistance API       / Criteria API   / object store / Criteria API is the code (programming) equivalent to the JPQL strings.
Java Persistance API & JDO / QueryDSL API   / object store / Java API to build queries similar to Criteria API, but different
JDBC                       / jOOQ           / direct JDBC  / Java API that replaces SQL strings construction with method calls that are table centric
H2 database                / JaQu           / object store / Linked directly to one database, non-portable.  Follows Microsoft LINQ syntax.
JDBC                       / ActiveJDBC     / object store / Looks like a branded version of almost-JPA for webapps.  

此 space 中的两个基本 API 是 JDBC 和 JDO,如果您只打算支持关系数据库,那么您希望使用的 JDO 子集是 JPA。 JDBC 和 JDO 都不直接提供数据库连接,它们是 pure-play API。也就是说,许多数据库供应商推出了不利用这些技术的 API,我建议不要使用任何不基于 JDBC 和 JPA 的技术。

同样,为了利用多个实现,我还建议您不要使用不基于 JPQL(如果您在字符串中构建查询)或 CriteriaAPI(如果您在代码中构建查询)的查询语言,两者这是 JPA 的概念组件。如果您直接使用 JDBC,请对所有已发布的 SQL 使用 PreparedStatements,并记住虽然您可以利用现有的 SQL 代码库和纯 JDBC解决方案,您可能会使用 JPA 获得质量更高的实现(并且可能更快地交付),因为在将关系数据库映射到 Java 时存在很多现有数据库代码库处理的极端情况。

不要写JDBC代码。 你永远不会比 MyBatis and/or Hibernate 做得更好。

相反,学习和使用 MyBatis 或 Hibernate。

MyBatis 更简单(并且很可能足以满足您的任何需求)并且 Hibernate 具有一百万个功能(none 您可能需要)。

  1. 使用 JDBC API 并注册您的数据库 class 并建立连接。
  2. 使用 Datasource,您可以在其中定义服务器上的数据库详细信息,例如 WebSphere 或 Weblogic 服务器然后您查找定义的数据源。
  3. 使用一些 ORM 框架,例如 Hibernate。