主存储器辅助存储器对象

时间:2009-07-12 19:48:19

标签: main-memory-database

我有一种情况,我想在Java应用程序中执行一些与DB相关的操作(例如在Eclipse上)。我使用MySQL作为RDBMS和Hibernate作为ORM提供者。

  1. 我使用Java中的嵌入式SQL检索所有记录:
  2. //定义conncections ...... etc

    ResultSet result = myStmt.executeQuery(“SELECT * FROM employees”);

    // iterator

    1. 我使用Hibernate ORM / JPQL检索所有记录:
    2. // Connections,Entity Manager .... etc

      列表结果= em.createQuery(“SELECT emp FROM Employees emp”)。getResultList();

      // iterator

      我知道RDMS位于辅助内存(DISK)上。问题是,当我得到两个结果时。员工实际上在哪里?在辅助(SM)或主存(MM)?

      我想最后有两个对象群体用于进一步测试,一个在SM上运行,另一个在MM上运行?这怎么可能?

      由于

1 个答案:

答案 0 :(得分:0)

您的Java对象是真正的Java对象,它们(使用您的术语)MM,至少在一段时间内。 Hbernate / JPA编程模型的优点在于,在MM中,您可以将对象视为任何其他Java对象,对它们进行一些更改等等。然后在某些约定的时间,Hibernate的持久性mechansim让它们变得很糟糕到,SM(磁盘)。

您需要了解会话和事务的含义,以了解MM和SM之间何时发生转换,以及非常重要的是,如果两个用户希望同时处理相同的数据会发生什么

也许开始here

也可以在MM中创建(至少现在)与磁盘上的任何数据无关的对象 - 这些是“瞬态”对象,还可以“记忆”数据与磁盘上的数据。< / p>

我的底线是,Hibernate / JPA确实从持久性编码中删除了许多繁琐的工作,但它无法掩盖规模的复杂性,因为数据量增加,数据模型的复杂性增加,用户的操作争夺所需的数据要认真思考。 Hibernate允许你实现好的东西,但它不能为你做那个思考,你必须仔细选择,因为你的问题域变得更复杂。