我有一些表格,我没有理由在应用程序中更新,所以我想防止它偶然发生在其他地方的错误。
我看到@Immutable
注释,但看起来仍然允许插入和删除。我想完整地将整个表格(不仅仅是每个实体)视为石头。有没有一种简单的方法来实现这一目标?或者我是否误解了@Immutable
上的文档?
如果需要一个示例,可以说有一个表MONTH
表,Month
实体和APPOINTMENT
表与Appointment
实体关联。我永远不想删除或插入一行到月。
答案 0 :(得分:3)
您是否尝试过只读缓存策略:
如果您的应用需要阅读但不能修改,则可以使用持久类的实例,只读缓存。这是最简单和最佳的执行策略。它甚至可以安全地用于集群。
答案 1 :(得分:1)
一种方法是通过将READ_ONLY
放在方法上来使用@Transactional(readOnly=true)
次交易。
http://www.codeinstructions.com/2009/04/read-only-transactions-with-spring-and.html
。
另一种方法:就隔离级别而言,如果您的表永远不会被插入或更新,您可以使用READ_UNCOMMITTED隔离级别,该级别允许脏读,不可重复读和幻读。然而,这些都不重要,因为数据永远不会改变。
您可以在spring javadocs(http://docs.huihoo.com/javadoc/spring/2.5/org/springframework/transaction/annotation/Isolation.html
)中查看每个的不同隔离级别和效果
这将最大程度地释放行上的锁定,并且会给你最佳性能,至少就锁定而言