【问题标题】:How to create read-only connection pool on Eclipselink如何在 Eclipse 上创建只读连接池link
【发布时间】:2014-03-04 10:12:49
【问题描述】:

我的 Eclipselink 应用程序不能修改数据库值。 当发生不允许的操作时,我希望 eclipselink 抛出一些异常。

我找到了connection-pool.read,将其添加到persistence.xml。但是CREATEUPDATEDELETE 语句并非无法执行。

连接池.read | EclipseLink 2.4.x Java Persistence API (JPA) 扩展参考:http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/p_connection_pool_read.htm#CHDDIIFD

在我的理解中,connection-pool.default是读写连接数的属性,connection-pool.read(或write)是单独设置连接数。这样理解正确吗?

【问题讨论】:

    标签: java sql jpa eclipselink


    【解决方案1】:

    根据本页:http://java-persistence-performance.blogspot.com.au/2011/06/how-to-improve-jpa-performance-by-1825.html

    优化 #5 - 只读 应用程序正在从 MySQL 数据库到 Oracle 数据库。所以只能从 MySQL 中读取。 当您在 JPA 中执行查询时,所有结果对象都变为 作为当前持久性上下文的一部分进行管理。这是浪费 在 JPA 中,因为管理对象被跟踪更改并注册到 持久性上下文。 EclipseLink 提供了一个 "eclipselink.read-only"="true" 允许持久化的查询提示 要绕过的上下文。这可用于迁移,因为 MySQL 中的对象不会被写回 MySQL。

    所以,试试 eclipselink.read-only 而不是 connection-pool.read

    【讨论】:

    • 我将 EntityManager 的只读设置为em.setProperty(QueryHints.READ_ONLY, HintsValue.True)。但是persistremove 操作正常执行。这是设置eclipselink.read-only提示的正确方法吗?
    • 参考文章中的示例使用 query.setHint("eclipselink.read-only", "true") 将其设置为针对 Query 对象。我自己从来没有这样做过,但最后的代码示例应该提供一些指导?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多