Appearance
问题收集3
事务的问题(@MoreTransaction)
场景1:一个方法里涉及多张表的数据保存,如果保存失败(例如:某个数据长度超多库表设置的长度),数据怎么回滚并返回自定义的异常原因(不抛出java的代码异常原因---)
问:事务如何自定义抛出‘意外’异常
答:抓取异常
方式1: 业务代码抓取异常
方式2: 异常aop统一处理,但无法自定义,且运维成本增高(无法直观的知道异常原因,需要查看日志文件)
tips:意外的异常应该在上线后避免
事务的问题回滚
1、场景:上传zip数据包并解析入库(涉及多张表:例如GG_SB、GG_CLQD、GG_CLQD_FJ、GC_NF_SJBYZ_LOG(数据包上传验证日志)),如果入库失败,GC_NF_SJBYZ_LOG((数据包上传验证日志))仍需入库,其它表需回滚,这种事务是要怎么弄?
问:数据库日志的记录 与 事务回滚 如何兼容
答: 日志的记录(及其他可能的操作)放到事务外
tips: mvc3层结构之外,还可以有其他的文件,业务工具等
- 结论: 业务自己抓取异常
大文件
zip大文件(最大可能会达到1.5G左右)上传,文件解压、读取mdb文件数据、验证zip包的指定文件是否存在,并存储指定文件的附件信息等操作
现况
- 现有代码里有普通文件访问方式和SMB方式,对应(上传、解压、验证文件、读取mdb文件)的就全部得写两套代码。
- 现两种(普通文件方式、SMB方式)解压方式速度有些慢。
- 其中读取mdb方式不支持smb的方式直接读取(现在是将文件放到服务器临时目录读取)
1、问:window操作系统可以配置策略将共享文件当成普通文件访问,linux未知,是否还需写两套代码????
答:linux,mac的路径与window方式不同,但可以暂不用考虑相关问题
2、问:zip大文件上传是否要用切片上传?若用切片方式上传是否直接上传到文件服务器?为了避免文件多复制一次所耗的时间,上传到文件服务器的相对路径就是最终的附件表的文件存放路径?
答:林钊
tips:文件数据的读取,必然要先读到内存中,所以,大文件数据的读取,就要考虑 需求 或者 设计 的合理性