我有一个问题,可能已被问了一百万次,但我正处于需要确定这样的事情的地步。 这是一个问题: 有没有办法编写Java代码,使用一种类型的代码来查询,更新,插入,删除,调用存储过程等,而不管事件背后可能存在哪个数据库? 比如我把代码写在系统上并自动检测到db是MS SQL Server并且工作,那么在另一种情况下数据库可能是Oracle但是应用程序不需要任何代码更改并自动检测和工作等等等等。 ..
如果这是不可能的,那么几乎达到这种抽象水平的最佳方法是什么?例如 有一个配置文件,只在该文件中更改将使用哪个数据库驱动器?
由于
答案 0 :(得分:1)
我最近转换为使用QueryDSL:http://www.querydsl.com/
使用它来构建查询,您需要做的就是在声明查询对象时提供正确的“模板”,并提供该特定数据库平台的映射。我没有使用它来调用存储过程。
答案 1 :(得分:0)
转到面向对象的HQL(Hibernate query language)。为此,您需要使用休眠。这样你就不必依赖于特定db的语法。如果你想从一个数据库切换到另一个数据库,它将是平滑的