我正在将EJB 2.1项目迁移到JPA / EJB3。我想摆脱很多EJB ReadOnlyBeans。
JPA / EJB3是否设计为本质上支持ReadOnlyAccess,而不需要ReadOnlyBeans?
EJB 2: 我在MSSQLSERVER中使用JBOSS将隔离级别设置为READ_COMITTED。 当Txn x尝试读取被txn Y锁定的行时,它将等待直到txn Y将更改提交到该行。 对于不需要最新数据的情况,我们使用ReadOnlyBeans无需任何事务即可获取数据。
JPA / EJB3: 我仍然将隔离级别设置为READ_COMITTED。如果删除ReadOnlyBeans,会不会有问题?
由于TransactionSceoped实体管理器使用不同的Entities实例,因此删除ROBean应该没有任何问题,对吗?
谢谢!
答案 0 :(得分:0)
如果我理解正确,那么您在问如何使JPA
实体不变。如果是这样,您可以
insertable = false, updatable = false
(使用@Column
,@JoinColumn
等)@Immutable
,EclipseLink中的@ReadOnly
等)话虽如此,我认为您描述的用例不需要实体为只读。如果您在不进行任何事务的情况下读取实体,则它们在加载后立即分离,因此不存在意外修改它们的风险(除非您专门选择使用扩展的持久性上下文)。