我使用Hibernate来管理数据库表,一切正常。
现在,另一个系统应该访问相同的数据库表,我不能告诉它使用Hibernate(因为它是一个单片软件)。 我怀疑从外部软件正确使用数据库以及这种方法引起我注意的一致性问题。特别是,这可能是个问题吗?也许Hibernate在RAM中工作(ORM可以实现缓存和延迟事务来加速写/读过程),因此可能在DB上的外部事务可能会导致Hibernate工作的不一致。这是Hibernate案例吗?
谢谢
答案 0 :(得分:1)
如何访问数据库(通过ORM,JDBC或其他连接器)无关紧要,唯一重要的是您的数据库将如何处理不同系统的多个连接(因此您可能需要看看像Transaction isolation)这样的东西。
答案 1 :(得分:1)
正如其他答案所指出的那样,对数据库而言并不重要。但是,您的申请完全是另一回事
默认情况下,Hibernate不能很好地处理其控制之外的数据更改。更具体地说,它倾向于完全忽略这些变化
因此,应用程序加载的数据很可能与数据库本身知道的数据不同步,从而导致各种问题。
这是因为Hibernate缓存数据,大量数据,并且倾向于在该缓存上运行而不是实际数据以提高性能,仅在提交事务时与数据库同步。如果其他东西改变了数据,Hibernate会幸福地忽略这些变化并覆盖其他进程所做的任何事情,偶尔也不会给你一个警告。
答案 2 :(得分:0)
不应该。你最好做一些集成测试。