过去几天我一直在玩 ORM 缓存,让我很困惑的一件事是即使启用了缓存,SQL 仍然记录(当我有 logSQL = true 时)到控制台。这让我觉得缓存不起作用,我认为 hibernate 不会创建 sql,因为它在缓存中看到了对象,但也许 hibernate 甚至在检查 ehcache 之前就生成了 sql。
我的代码在下面,以防有人发现我遗漏的东西。 应用程序.cfc
this.ormSettings.secondarycacheenabled = "true";
this.ormSettings.cacheprovider="ehcache";
this.ormSettings.logSQL=true;
然后我的书cfc
component persistent="true" entityname="Books" table="db_books" cacheuse="transactional" lazy="true"
最后是我用来调用的代码。
a = entityloadbypk("Books","1");
writeoutput(a.getName());
最佳答案
根据我的阅读和第一手经验,无论 ColdFusion ORM (Hibernate) 是 JIT 生成它还是从缓存中提取它,通过线路传输到您的 DBMS 的 SQL 都将始终被记录下来。如果有的话,您可以运行一些基准测试来快速确定是否实际使用了缓存。
关于hibernate - ColdFusion ORM 缓存和 LogSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5844495/