0

我在 Java 中使用 SQLite3 和 Hibernate。我可以以某种方式将整个数据库加载到内存中或从数据库中获取所有数据,以便我可以最快地访问映射对象吗?例如,如果我们有一个 Company 和 Employee 类,并且在 Company 中,我们将Employees 映射为 company.getEmployees()。我想从数据库中获取所有公司,稍后当我调用此方法时,我想立即获取员工。那么有没有办法预加载它们?此外,如果员工被映射到其他对象,我也可以预加载它们吗?总而言之,我想加载整个数据库并使用 ORM 来访问数据。谢谢!

4

2 回答 2

2

如果您的目标只是出色的性能,您有多种选择:

  • 配置 Hibernate 二级缓存
  • 除了前面一点,如果您的数据没有太大变化,请配置查询缓存。
  • 代替 SQLite 在嵌入式模式下使用HSQLDBH2内存 SQL 数据库
  • ObjectDB与大型共享缓存一起使用。符合 JPA 的 OODB。
  • 使用 MongoDB。一个非常快速的内存 NoSQL 解决方案

如果您不需要使用 SQL,我建议使用 ObjectDB。

(编辑:删除急切获取,添加查询缓存。)

于 2012-12-13T15:42:09.060 回答
0

将实体类中的所有关系设置为渴望。如果您使用 JPA 注释:

public class Company{

private List<Employee> employeeList;

@ManyToMany(fetch = FetchType.EAGER)
public List<Employee> getEmployeeList() {
        return employeeList;
    }
}

当您从数据库中检索公司时,这将自动获取所有员工。请注意,这可能会显着影响性能。

于 2012-12-13T15:05:21.387 回答