我是持久性的新手,我正在阅读“Pro JPA 2”一书。我读到Java和JDBC包的问题是
- SQL 不可移植
- Java 代码和 SQL 之间的紧密耦合
JDBC 具有讽刺意味的是,尽管编程接口是可移植的,但 SQL 语言却不是。尽管进行了多次标准化尝试,但编写在两个主要数据库平台上不变运行的复杂 SQL 仍然很少见。即使在 SQL 方言相似的情况下,每个数据库的性能也会根据查询的结构而有所不同,在大多数情况下都需要针对供应商进行调整。
我的问题是:
- 与 SQL 可移植性相关的问题是否仍然如此关键?
- 据我了解,Hibernate、TopLink 和其他框架也必须从它们的元数据(注释)创建 SQL 查询。他们如何安排与 SQL 可移植性相关的问题?
- Java 和 JDBC 紧耦合意味着开发人员必须编写 SQL 查询。我理解正确吗?
提前感谢您的回复)