将持久性上下文设置为以jpa为只读

时间:2010-09-17 11:51:42

标签: sql-server orm jpa jdbc readonly

我们将使用旧数据库。 因此,在任何情况下(来自报告模块)我们都不修改数据库/表/模式是非常关键的,因此我想设置持久性上下文,其中一些持久性单元为只读(用于报告模块) ,有些正常JTA启用。

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

我想知道我们可以使用persistence.xml文件做些什么更简单,或者可能是JDBC驱动程序级别,这样我与DB的连接是有选择的只读和基于持久性的读写 - 单位活跃。或正在使用的数据库驱动程序URL ...我们使用SQL-Server作为数据库服务器...如果这有点帮助。

1 个答案:

答案 0 :(得分:6)

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

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

我检查了Microsoft JDBC驱动程序的connection properties,但没有发现任何可能有用的内容。

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