如何在 db2 动态语句缓存中解析带有参数标记的命名查询?
我有一个带注释的实体,其中包含命名查询。该查询包含 3 个位置参数标记。
在运行时,参数被设置并在语句存储到 DB2 缓存之前绑定它们。结果是缓存中充满了许多相似的 SQL 语句,并且每条语句都被一次又一次地绑定。 有没有一种方法可以像预准备语句一样执行命名查询,以便 sql 在 DB2 缓存中仅绑定和存储一次(带有问号)?
我使用 WLS 10.2 作为应用程序服务器,使用 eclipselink 作为持久性提供程序,使用 DB2 作为数据库。
我尝试使用属性 property
name="eclipselink.jdbc.bind-parameters" value="false"
配置 eclipselink但在任何情况下(默认为 true),SQL 语句都与绑定文字一起存储,而不是 ?在 DB2 缓存中。
期待任何提示或答案。
谢谢。
I have an annotaded entity which contains a named query. The query contains 3 positional parameter marker.
At runtime the parameters are set and they are binded before the statement is stored in the DB2 cache. The consequence is that the cache is filled with a lot of similar SQL-statements and every statement is binded again and again.
Is there a way to perform namedqueries like prepared statements so that the sql is binded and stored only once, with the question marks, in the DB2-cache?
I'm using WLS 10.2 as application server, eclipselink as persistence provider and DB2 as database.
I've tried to configure eclipselink wit the property
property name="eclipselink.jdbc.bind-parameters" value="false"
But in any case (Default is true) the SQL-statements are stored with the binded literals instead of the ? in the DB2-cache.
Looking forward to any hints or answers.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要使用
property name="eclipselink.jdbc.bind-parameters" value="true"
这是默认值, false 将阻止语句缓存。
您还应该启用语句缓存。如果使用数据源,则需要在数据源中进行配置。如果使用 EclipseLink 连接池,您可以使用
property name="eclipselink.jdbc.cache-statements" value="true"
You need to use,
property name="eclipselink.jdbc.bind-parameters" value="true"
which is the default, false will prevent statement caching.
You should also enable statement caching. This needs to be configured in your DataSource if using a DataSource. If using EclipseLink connection pooling you can use,
property name="eclipselink.jdbc.cache-statements" value="true"