我们有两个团队想要使用不同的技术访问同一个数据库。一个使用JPA(Hibernate,具体而言)。另一个使用普通的JDBC。
我被要求编制一份关注列表,假设每个团队都使用默认配置和/或"最佳实践"每种技术。
这是一个新的数据库,因此假设该模式仅由JPA团队设计,或者仅由JDBC团队设计,然后他们都试图访问它。
你能分享一下你的经历吗?
更新:我不是在这里征求意见。我不在乎JPA或JDBC是否更好"。在混合使用这两种技术时,我要求提供关于互操作性问题的客观列表。
以下是我正在寻找的一个例子:
场景:用户读取一行,在内存中修改它,并将其保存回数据库。
version
列来使用乐观锁定。SELECT ... FOR UPDATE
来防止并发更新。想象一下,如果JDBC实现不了解JPA约定并且在提交时不更新version
会发生什么:
SELECT
读取一行,并看到version
等于1。SELECT ... FOR UPDATE
读取一行。version
。version
仍然等于1. 获得的经验:JDBC实现需要知道更新version
列。
答案 0 :(得分:0)
在等待其他人回答的同时建立我自己的清单:
@Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
,则会创建并使用序列表(例如hibernate_sequence
)。 JDBC也必须这样做。