Java 要使用hibernate查询中的事务从文件夹中删除现有文档,并从表中删除数据库值吗
我有一个上传文档的应用程序。上传文档后,新创建文档路径,并将文档保存在文件路径中。同时,文档路径和相关值保存在数据库表中。在上传后的我的应用程序中,有一个按钮可以删除不需要的文档。有时文档删除操作无法正常工作。因此会发生内存浪费。我想通过使用transaction语句来避免这种情况。我不知道如何使用hibernate事务来完成我的工作。这可能吗?请帮助我成功地完成这项工作(我正在使用带有hibernate集成和postgresql的spring) 多谢各位 内部控制器Java 要使用hibernate查询中的事务从文件夹中删除现有文档,并从表中删除数据库值吗,java,spring,hibernate,postgresql,Java,Spring,Hibernate,Postgresql,我有一个上传文档的应用程序。上传文档后,新创建文档路径,并将文档保存在文件路径中。同时,文档路径和相关值保存在数据库表中。在上传后的我的应用程序中,有一个按钮可以删除不需要的文档。有时文档删除操作无法正常工作。因此会发生内存浪费。我想通过使用transaction语句来避免这种情况。我不知道如何使用hibernate事务来完成我的工作。这可能吗?请帮助我成功地完成这项工作(我正在使用带有hibernate集成和postgresql的spring) 多谢各位 内部控制器 int supDocId=
int supDocId=1102;
String docPath=D:/;
String filePath=docPath+supDocId+".pdf";
File file=new File(filePath);
boolean isDelete = servicesService.deleteDocument(supDocId);
if(isDelete)
{
if(file.exists())
{
file.delete();
}
alertMsg = "The file is deleted sucessfully";
}
else{
alertMsg = "Deletion Failed.!!! File is under processing..";
}
在职班
public boolean deleteDocument(int supDocId){
return servicesDAO.deleteDocument(supDocId);
}
服务类
public boolean deleteDocument(int supDocId){
int deleteStatus=0;
try {
String deleteQuery = "DELETE FROM tablename WHERE attch_doc_id='"+supDocId+"'";
Query deleteQ = session.createSQLQuery(deleteQuery);
deleteStatus = deleteQ.executeUpdate();
if(deleteStatus>0){
return deleteStatus;
}
} catch (Exception e) {
e.printStackTrace();
}
return deleteStatus;
}
我想使用transaction语句在DAO类中执行两个操作(文档和数据库值删除)。如果DB transaction失败,您不仅会遇到删除文件的问题,还会遇到上载新文件的问题 在大多数情况下,文件系统不支持事务,所以我认为使用XA(使用JTA的分布式事务)或类似方法无法实现防弹解决方案 在我的一些项目中,我使用了一种非常直接的解决方案:
您不应该使用
+supDocId+
将其替换为?
,否则您将容易受到Sql注入的影响
和deleteQ.Execute()
是您希望执行的操作,而不是更新,因为您希望在删除某些内容时检查布尔值true或false