从数据库获取值的好方法

时间:2011-03-24 15:03:24

标签: java sqlite jdbc database-connection abstraction

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

  • 如何从整个程序访问数据库(我使用静态类,使用init方法调用一次,然后使用sycronized blocks)
  • 我怎样才能获得正确的对象类型?这是一个很好的方法来获得像Object getSingeValue(String query)...这样的方法,然后在这个方法中进行comperison,用ResultMetaSet输入它?
  • 插入或更新值的最佳方法是什么?我知道这种类型并想把它放进去......

有谁知道数据库抽象层的一个很好的实现或我可以使用的东西?

谢谢!

1 个答案:

答案 0 :(得分:3)

你有几个选择:

  • JDBC - 用于低级别访问数据库
  • ORM喜欢Hibernate - 用于更高级别的访问

根据您的问题,听起来您喜欢使用像Hibernate这样的Object to Relational映射工具或其他基于JPA的ORM工具。这些通常会为您提供一种高级查询数据库并返回完全形成的Java对象的方法。

回答你的问题:

  

如何从中访问数据库   整个计划

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

  

我怎样才能获得正确的对象类型?

ORM工具通常会在特定表和Java对象之间建立关系。也就是说,即使使用ORM,你也要提交你想要的对象的“模板”,所以如果你自己编写,你会经常使用这样的模式:

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

插入或更新值的最佳方法是什么?

同样,ORM会有所帮助,而且模式通常只是用于传递您想要保存的对象。您可以使用XML或注释等外部配置,以便关联映射层的对象知道如何将对象转换为适当的行和列。像Hibernate这样的标准ORM中的保存或更新就像这样简单:

session.saveOrUpdate(myObject);
  

有谁知道数据库抽象层的一个很好的实现或我可以使用的东西?

Hibernate或大多数其他JPA 2.0 ORM听起来都像你需要的那样。