sql-server - 在 jpa 中将持久性上下文设置为只读

标签 sql-server orm jpa jdbc readonly

我们将使用旧数据库。 因此,在任何情况下(从报告模块)我们都不要修改数据库/表/模式,这一点非常重要,因此我想将一些持久性单元设置为只读的持久性上下文(用于报告模块) ,还有一些作为正常的 JTA 启用。

我们已经考虑过创建两个帐户用于这些持久性单元,一个将被授予只读访问权限,另一个将具有读写访问权限。

我想知道我们是否可以用 persistence.xml 文件做一些更简单的事情,或者可以在 JDBC 驱动程序级别做一些更简单的事情,这样我到数据库的连接就可以根据持久性有选择地只读和读写- 单位活跃。或正在使用的数据库驱动程序 url...我们正在使用 SQL-Server 作为数据库服务器...如果有帮助的话。

最佳答案

据我所知,在标准 JPA 中不支持此操作(除了使用对数据库连接具有受限权限的用户之外)。但是您的 JPA 提供商可能支持:

  • 只读实体(例如,带有 ElipseLink @ReadOnly 或 Hibernate @Immutable 注释)
  • 通过提示进行只读查询(例如,将 EclipseLink 的 eclipselink.read-only 设置为 true 或将 org.hibernate.readOnly 设置为对于 Hibernate 为 true

我检查了 connection properties Microsoft JDBC 驱动程序,但没有发现任何有用的信息。

PS:EclipseLink ( Bug 282595) 有一个未决的增强请求,以提供对只读 EntityManager 的支持。你可能想投票给它。

关于sql-server - 在 jpa 中将持久性上下文设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3735049/

相关文章:

python - 将 `sqlalchemy.orm` 与复合主键一起使用

hibernate - 使用 Hibernate 让我的 webapp 与数据库无关

jpa - 使用 EclipseLink 为 JPA 2.0 生成 DDL

java - 使用 jpa 删除 map 的元素

sql-server - 尝试删除时 SQL 异常错误 #547 和外键约束违规

sql-server - SQL Server : populate table in 15 minute intervals

c# - 错误 "An entity object cannot be referenced by multiple instances of IEntityChangeTracker"

sql - Azure - 从我的本地计算机连接到 SQL Server

python - Django内置的Web服务器: Usage and Reliability Concerns

java - 没有反向关系的多态 CriteriaQuery