我有一个文件上传的应用程序.上传文件后,新创建文档路径,文档保存在文件路径中.同时文档路径和相关值保存在数据库表中.在我的应用程序中上传后,有一个删除不需要的文件的按钮.有时文件删除操作不正常工作.因此会出现...
我有一个文件上传的应用程序.上传文件后,新创建文档路径,文档保存在文件路径中.同时文档路径和相关值保存在数据库表中.在我的应用程序中上传后,有一个删除不需要的文件的按钮.有时文件删除操作不正常工作.因此会出现内存浪费.我想通过使用交易声明来避免这种情况.我不知道如何将hibernate事务用于我的工作.这可能吗?请帮我成功完成工作(我使用spring与hibernate集成和postgresql)
谢谢
在控制器中
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);
}
在servicesDAO类
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;
}
我想使用事务语句在DAO类中处理两个操作(文档和数据库值删除).
解决方法:
如果数据库事务失败 – 您不仅会遇到已删除文件的问题,还会对上传的新文件产生问题.
在大多数情况下,文件系统不支持事务,因此我不认为使用XA(使用JTA的分布式事务)或类似方法可以实现防弹解决方案.
我在一些项目中使用的相当直接的解决方案:
>文件系统中的文件是在数据库提交之前创建的(但最好是在hibernate刷新之后).
>在文件删除操作中,从DB中删除对文件的引用,但不从文件系统中删除.
>异步进程定期扫描文件系统中的所有文件,并删除没有DB引用的文件.
如果您有大量文件,则可能需要进行一些优化以防止始终扫描所有文件.例如:
>将新文件放入名为“当前日期”的文件夹中,因此只能检查部分文件是否包含上传新文件的不成功事务.
>在文件删除操作中,参考应删除的文件,将新记录插入表“deleted_files”.
>创建异步进程以定期扫描表“deleted_files”,删除物理文件,如果删除成功(或文件已经丢失),则从表“deleted_files”中删除记录并提交事务.
本文标题为:java – 想要使用hibernate查询中的事务从表中的文件夹和数据库值中删除现有文档
基础教程推荐
- Java Bean 作用域及它的几种类型介绍 2023-05-14
- java – 应用程序是否可以更改WebSphere和DB2组合上每个单独事务的隔离级别 2023-11-03
- java发送kafka事务消息的实现方法 2023-03-06
- Spring boot Thymeleaf配置国际化页面详解 2023-03-06
- zookeeper的watch机制原理解析 2023-01-29
- springboot中的css样式显示不出了的几种情况 2023-06-23
- 一文教你搞定Java Optional类判空操作 2023-06-06
- SpringMvc请求处理参数 和 响应数据处理的示例详解 2023-05-09
- SpringBoot集成drools的实现示例 2022-11-12
- Schedule定时任务在分布式产生的问题详解 2023-06-17