![]() |
1
2
为所有实体设置第二级CAHCE(检查Hibernate文档以了解缓存的各种配置/映射详细信息),配置查询缓存并在映射/使用只读会话中将其标记为不可变,这将使Hibernate在执行“事务性后写”和会话时不检查这些实体的修改。冲洗时。 这是一个非常常见的场景,这是您应该做的全部工作。 您不必像echache那样开发自己的内存哈希映射缓存(二级缓存为您提供了多种存储选择),二级缓存可以为您做什么。 无事务数据库访问不提供任何性能方面的功能,所以我不担心它,让Hibernate来处理它。 |
![]() |
2
2
我以前处理过这类事情,关于数据的枚举表是不变的,坦率地说,最简单的事情就是将表设置为热切加载并处理它。除非表很大,否则从其他任何地方获得的优化都相对较小。不要轻蔑,但您的时间可能更好地用于优化系统的另一部分。 也就是说,如果您的表特别大,那么您可能需要考虑另一种方法来取消引用它们所包含的数据;如果表数据很大并且确实从未更改过,那么您可能需要考虑另一种方法来填充对象树,而不是使用Hibernate;只为枚举创建一个类可能会有所帮助。并自行管理该引用的关联(即,没有休眠)。 |
![]() |
3
1
我认为只读事务是一种休眠优化。如果Hibernate知道不必弄清楚是否更改了对象中的任何内容,那么它可以放弃一系列步骤(cglib修改类?) |
![]() |
4
1
我想你其他的大部分问题都得到了回答。但是,就隔离级别而言,如果从未插入或更新表,则可以使用读取未提交的隔离级别,该级别允许脏读、不可重复读和幻象读。但这些都不重要,因为数据永远不会改变。 您可以查看Spring JavaDocs中每个应用程序的不同隔离级别和效果。( http://docs.huihoo.com/javadoc/spring/2.5/org/springframework/transaction/annotation/Isolation.html ) 这将最大限度地释放行上的锁,并为您提供最佳性能,至少在锁定过程中如此。 |
![]() |
5
-2
根据我的经验,这些类型的表需要从数据库中删除并转换为枚举或其他类型。不是因为性能,而是为了可维护性。信不信由你,与编写脚本来更改生产数据库中的数据相比,更改代码(在我的经验中也是如此)是一个更简单、更精简的操作。尤其是如果你不一定要自己控制数据库,尤其是如果你的公司甚至不控制它。 |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |