我正在为我的项目使用 Spring data
,我正在使用 extends CRUD Repository
的标准 Repository
。
我的代码按预期工作,但是当我调用 repository.save()
时,数据库没有改变?
我是否还需要在此之后调用 commit
以更改数据库?或者 repository.save()
方法应该自动更改数据库吗?
最佳答案
当你的应用程序运行时,与线程关联的实体管理器保持对修改或添加对象的控制,save() 方法就是这样做的,它是一个标记,上面写着:“这应该保存在数据库中”。
数据库 DML(插入、更新、删除)不会在您保存内容时发送到数据库,它是在最后提交之前完成的,延迟到最后一刻。
您可以随时使用实体管理器的 flush() 方法将 DML 发送到数据库,实际上您可以调试数据库日志并查看您的查询,但对数据库的这种更改只会在您的数据库连接,直到发出提交; commit() 是与实体管理器关联的事务的方法。
在某些框架中,例如 play 1.4.x,提交是在响应 View 被正确解析和呈现后发出的。
关于java - Spring JPA : Should the Save() method commit data to the database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651757/