java - 从数据库中获取值的好方法

标签 java sqlite jdbc database-connection abstraction

是否有从 Java 数据库中获取值的最佳实践? 我的特殊问题是:

  • 我如何从整个程序访问数据库(我使用带有初始化方法的静态类,调用一次然后同步块(synchronized block))
  • 如何获得正确的对象类型?使用像 Object getSingeValue(String query)... 这样的方法,然后在这个方法中使用 ResultMetaSet 进行比较是不是一种好方法?
  • 插入或更新值的最佳方式是什么?我知道类型,想把它放在...

有人知道数据库抽象层的良好实现或我可以使用的东西吗?

谢谢!

最佳答案

这里有几个选项:

  • JDBC - 用于对数据库进行低级访问
  • 类似 Hibernate 的 ORM - 用于更高级别的访问

根据您的问题,您似乎想使用对象到关系的映射工具,例如 Hibernate 或其他基于 JPA 的 ORM 工具之一。这些通常会为您提供一种高级方法来查询您的数据库并返回完全形成的 Java 对象。

回答您的问题:

how can i access the database from whole program

这通常不是由数据库层解决的问题,而是通过像依赖注入(inject)这样的设计模式来解决的,它为您提供了一种构建所有对象并将适当的依赖项传递给它们的方法(例如数据库连接)。有关 DI 的实际示例,请参阅 Spring Framework。

how i can get the right object type?

ORM 工具通常会在特定表和 Java 对象之间建立关系。也就是说,即使使用 ORM,您也会提交所需对象的"template",因此如果您自己编写,通常会使用这样的模式:

session.createCriteria(MyMappedObject.class).list()

What is the best way to insert or update values?

同样,ORM 会有所帮助,该模式通常只是提交您要保存的对象。您可以使用 XML 或注释等外部配置,以便您的对象到关系映射层知道如何将您的对象转换为适当的行和列。在 Hibernate 等标准 ORM 中进行保存或更新非常简单:

session.saveOrUpdate(myObject);

do anyone know a good implementation of a database abstraction layer or something which i can use?

Hibernate 或大多数其他 JPA 2.0 ORM 听起来正是您所需要的。

关于java - 从数据库中获取值的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421204/

相关文章:

java - Android布局和复选框

java - 为什么我的 Sprite 在 LibGDX 中闪烁?

java - 用gradle构建失败

sqlite - Phonegap不支持sql Rand(),该怎么办?

ios - 如何从 Core Data SQLite 数据库中删除某些行?

java - 执行更新被阻止

java - 使用外部 jar 。找不到适用于 jdbc :sqlserver 的合适驱动程序

java - "Could not find or load main class"使用命令行

python - 是否可以以只读模式打开锁定的 sqlite 数据库?

java.sql.SQLException : Access denied for user 'root' @'localhost' (using password: YES) in spring using mysql