views:

50

answers:

1

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.

+2  A: 

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 to true for EclipseLink or org.hibernate.readOnly set to true 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.

Pascal Thivent