我想知道是否有java方法/对象可以替代cfquery,它们都允许变量卫生,以及更好的缓存方法。
我知道您可以使用信息模式来获取数据类型和字符长度,然后使用它来验证数据类型和数据类型。查询中变量的长度。
但是每个人都转换为使用cfqueryparam进行绑定变量和变量卫生,这也会阻止在cfquery上使用缓存。
所以我希望有更好的方法或脚本来获得更高的性能和可伸缩性......
就个人而言,我认为我们需要在cfquery中使用一种新的缓存方式或方法。因为我们真正想要的不是缓存x分钟,而是缓存直到数据发生变化,使用新数据,然后再次缓存,直到数据再次发生变化..
多年来,我们不得不计算我们想要在coldfusion中缓存cfquery的时间长度,这对于数据何时更改没有给出很多控制或意识。
这有意义吗?
答案 0 :(得分:5)
首先,让我们消除误解。在CF8 +上,您可以缓存使用cfqueryparam的查询。我不太确定你所说的“每个人都在转换”,因为使用它已被广泛认为是一段时间内的最佳实践。
所以,我认为你的问题实际上没有实际意义。虽然你可以手动缓存查询(我为其他数据类型执行此操作),但cfqueryparam暂时不是这样做的理由。
答案 1 :(得分:1)
如果您正在寻找一种访问数据的“替代”方法,那么ORM(对象关系映射)就是您的选择。如果您使用的是CF9,则可以使用Hibernate库(Java)来管理数据的访问和缓存。
CF7 +用户可以使用由Mark Mandel为ORM功能构建的Transfer库。
答案 2 :(得分:0)
除了 jarofclay 的回答之外,我还要注意Transfer ORM有内置的缓存系统(虽然即将推出的版本将允许使用一些更好的现有解决方案),这是怎么回事它提供了更好的性能。
任何方式,我最好开始使用模式和查询优化,并尝试使用缓存,它可以在不同的级别上完成:从db查询到呈现的内容。
例如,新版本的Railo支持一些企业级缓存引擎,如ehCache。
IMO这是解决您的性能任务的更好方法,而不是试图搞乱Java和查询。如果我理解正确,他们仍将运行相同的数据源,甚至可能使用相同的基础字节代码。