Java 用Hibernate加载整个数据库
我正在使用SQLite3和Hibernate与Java。我是否可以将整个数据库加载到内存中,或者从数据库中获取所有数据,以便以最快的速度访问映射对象?例如,如果我们有一个Company和Employee类,并且在Company中,我们将员工映射为Company.getEmployees()。我希望从数据库中获取所有公司,稍后调用此方法时,我希望立即获取员工。那么有没有办法预加载它们?此外,如果employee映射到其他对象,我也可以预加载它们吗?总之,我想加载整个数据库并使用ORM访问数据。谢谢 将实体类中的所有关系设置为“渴望”。如果您使用的是JPA注释:Java 用Hibernate加载整个数据库,java,hibernate,memory,sqlite,eager,Java,Hibernate,Memory,Sqlite,Eager,我正在使用SQLite3和Hibernate与Java。我是否可以将整个数据库加载到内存中,或者从数据库中获取所有数据,以便以最快的速度访问映射对象?例如,如果我们有一个Company和Employee类,并且在Company中,我们将员工映射为Company.getEmployees()。我希望从数据库中获取所有公司,稍后调用此方法时,我希望立即获取员工。那么有没有办法预加载它们?此外,如果employee映射到其他对象,我也可以预加载它们吗?总之,我想加载整个数据库并使用ORM访问数据。谢谢
public class Company{
private List<Employee> employeeList;
@ManyToMany(fetch = FetchType.EAGER)
public List<Employee> getEmployeeList() {
return employeeList;
}
}
上市公司{
私人名单雇员名单;
@ManyToMany(fetch=FetchType.EAGER)
公共列表getEmployeeList(){
返回员工名单;
}
}
这将在您从数据库检索公司时自动获取所有员工。请注意,这可能会极大地影响性能。如果您的目标只是提高性能,那么您有几个选择:
- 配置Hibernate第二级
- 除了前一点之外,如果您的数据变化不大,请进行配置
- 在嵌入式模式下使用SQL数据库代替SQLite或内存中的SQL数据库
- 与大型共享文件夹一起使用。符合JPA的OODB
- 使用MongoDB。一个非常快速的内存NoSQL解决方案
(编辑:删除了即时抓取,添加了查询缓存。)您确定这不会在每次我调用getEmployeeList时发出请求吗?只要它是同一个对象,就完全可以。只是好奇,你为什么要这么做?看一看,使用内存中的数据库似乎是一种更好的方法,因为我的数据库很小(~3MB),我使用其中存储的每一位数据。谢谢没问题!请接受这个问题,如果你考虑它,我认为他会更好地通过实施第一步。尽管我同意其余的说法,但如果太费劲,配置一个好的缓存会很好。