java - Spring 3 + Hibernate : Should I use dirty checking, 以及如何使用基于注释的事务来做到这一点?

标签 java hibernate spring-mvc

首先,我是 Spring 的新手,我不太了解它如何处理 Hibernate 事务,所以请随意教我一两件事! :D

我正在编写一个具有标准 Controller 、服务、数据访问和持久层的应用程序。所以我有例如FileController、FileService、FileDao,以及处理 Hibernate 的 SpringFramework。

<前>@Service 公共(public)类文件服务{ @Autowired FileDao 文件Dao; 公共(public)文件服务(){} @事务性 公共(public)文件 getRootFile() { 返回 fileDao.getRootFile(); } @事务性 公共(public)文件 getById(长 id) { 返回 fileDao.getById(id); } @事务性 公共(public)无效保存(文件文件){ fileDao.save(文件); } }

我还将 OpenSessionInView 模式与 OpenSessionInViewInterceptor 结合使用。

我有两个问题:

  • 我应该在 View 中的打开 session 中使用脏检查吗?这是否会导致 View 可能对模型所做的任何更改被持久化?
  • 如果脏检查是个好主意,我该怎么做?看来现在,我必须进行 save()update() 调用,否则脏对象在我的 Controller 返回后不会保留。 提前致谢!

最佳答案

如果您指的是乐观锁定,请查看 Hibernate 文档: Chapter 11.3. Optimistic concurrency control

或 JPA http://blogs.oracle.com/carolmcdonald/entry/jpa_2_0_concurrency_and

您需要的注释是@Version

@Version
@Column(name = "version", nullable = false, length = 5)
public int getVersion() { ... }

关于java - Spring 3 + Hibernate : Should I use dirty checking, 以及如何使用基于注释的事务来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573176/

相关文章:

spring - 找到对多对多关系集合的共享引用

java - 升级到 springboot 2.4.13 后 RequestMappingInfo.getMatchingCondition 抛出 IllegalArgumentException

java - Spring MVC 如何转换 @RequestParam 值?

java - 如何在 spring mvc 应用程序中打开弹出窗口

java - 如何在进入JSP页面后立即进入Servlet?

java - JPanel 出现在 Netbeans Debug模式中,但不在运行模式中

spring - 使用 JPA + Spring 监控性能

java - 使用安全随机数生成长数

java - 我的基于 Firebase 的登录应用程序不断停止。我找不到解决方案

java - 在非 guice 类中注入(inject) guice 管理的依赖项