JPA.EJB3中等效的EJB 2 ReadOnlyBean是什么?

时间:2019-07-06 19:27:29

标签: java jpa ejb ejb-3.0

我正在将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应该没有任何问题,对吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您在问如何使JPA实体不变。如果是这样,您可以

  • 将其所有属性标记为insertable = false, updatable = false(使用@Column@JoinColumn等)
  • 使用供应商特定的扩展名(例如Hibernate中的@Immutable,EclipseLink中的@ReadOnly等)

话虽如此,我认为您描述的用例不需要实体为只读。如果您在不进行任何事务的情况下读取实体,则它们在加载后立即分离,因此不存在意外修改它们的风险(除非您专门选择使用扩展的持久性上下文)。