我是jpa和hibernate的初学者,我理解jpa如何实现数据库独立性和持久性提供者独立性。
我遇到了陈述
的句子{{1}}
jpa如何实现这一目标?
答案 0 :(得分:0)
JPA是一个API,这个API完全从您的数据表示和DDL中抽象出来。此外,它是从API实现中抽象出来的(与直接用于Hibernate不同)。
这意味着你可以:
这些可以通过注释 AND / OR 配置来完成。因此理论上,您可以从Oracle切换到PostgreSQL,而无需重新编译应用程序。
这也意味着你可以做其他时髦的事情:
您可以获得开箱即用的SQL注入保护等其他细节,非常快速的启动时间(而不是必须对所有内容进行两次编码),当您定义了实体等时自动生成DDL,这样可以更快地启动小项目比传统的路线。
现实:
配置方面和使用像Hypersonic这样的东西的能力虽然很有用。
另一个"翻转面"对于可爱的API抽象是实现可能过于约束,导致生成非常低效的SQL。最终,开发人员必须添加本机SQL。
答案 1 :(得分:0)
模式独立性可以与DB和提供者独立性相同的方式实现 - 可以简单地在配置中更改所有表的模式。您可以通过persistence-unit-defaults
更改persistence.xml中包含的orm.xml文件中的默认架构。
您也可以通过@Table注释指定架构。