Skip to content

问题收集3

事务的问题(@MoreTransaction)

场景1:一个方法里涉及多张表的数据保存,如果保存失败(例如:某个数据长度超多库表设置的长度),数据怎么回滚并返回自定义的异常原因(不抛出java的代码异常原因---)

图片1

问:事务如何自定义抛出‘意外’异常

答:抓取异常

方式1: 业务代码抓取异常

图片5

方式2: 异常aop统一处理,但无法自定义,且运维成本增高(无法直观的知道异常原因,需要查看日志文件)

图片6

tips:意外的异常应该在上线后避免

事务的问题回滚

1、场景:上传zip数据包并解析入库(涉及多张表:例如GG_SB、GG_CLQD、GG_CLQD_FJ、GC_NF_SJBYZ_LOG(数据包上传验证日志)),如果入库失败,GC_NF_SJBYZ_LOG((数据包上传验证日志))仍需入库,其它表需回滚,这种事务是要怎么弄?

问:数据库日志的记录 与 事务回滚 如何兼容

答: 日志的记录(及其他可能的操作)放到事务外

图片52

tips: mvc3层结构之外,还可以有其他的文件,业务工具等

  • 结论: 业务自己抓取异常

大文件

zip大文件(最大可能会达到1.5G左右)上传,文件解压、读取mdb文件数据、验证zip包的指定文件是否存在,并存储指定文件的附件信息等操作

现况

  • 现有代码里有普通文件访问方式和SMB方式,对应(上传、解压、验证文件、读取mdb文件)的就全部得写两套代码。
  • 现两种(普通文件方式、SMB方式)解压方式速度有些慢。
  • 其中读取mdb方式不支持smb的方式直接读取(现在是将文件放到服务器临时目录读取)

图片2

1、问:window操作系统可以配置策略将共享文件当成普通文件访问,linux未知,是否还需写两套代码????

答:linux,mac的路径与window方式不同,但可以暂不用考虑相关问题

2、问:zip大文件上传是否要用切片上传?若用切片方式上传是否直接上传到文件服务器?为了避免文件多复制一次所耗的时间,上传到文件服务器的相对路径就是最终的附件表的文件存放路径?

答:林钊

tips:文件数据的读取,必然要先读到内存中,所以,大文件数据的读取,就要考虑 需求 或者 设计 的合理性