setting persistence context to read-only in jpa
we are going to be working with an old database. so it is very crucial that we do not modify the database/table/schemas under any circumstances (from the reporting modules), and as such i want to setup a persistence-context with some persistence units as read-only (for reporting modules), and some as normal JTA enabled.
we have already thought about creating two accounts for using in these persistence units, one will be given read only access, the other will have read-write access.
I was wondering if there is something simpler that we can do with the persistence.xml file or may be at the JDBC driver level, so that my connections to 开发者_如何学编程the DB are selectively read-only and read-write based on the persistence-unit active. or the database driver url being used... we are using SQL-Server as the DB Server...if that helps any bit.
To my knowledge there is no support for that (beyond using a user with restricted rights for the database connection) in standard JPA. But your JPA provider might support:
- Read-only entities (e.g. with ElipseLink
@ReadOnly
or Hibernate@Immutable
annotations) - Read-only queries via hints (e.g. with
eclipselink.read-only
set totrue
for EclipseLink ororg.hibernate.readOnly
set totrue
for Hibernate).
I checked the connection properties of the Microsoft JDBC driver but didn't spot anything that could help.
PS: There is a pending enhancement request for EclipseLink ( Bug 282595 ) to provide support for a read-only EntityManager
. You might want to vote for it.
精彩评论