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