2019独角兽企业重金招聘Python工程师标准>>>
一、基本思路
1、设计一个baseDao,在dml方法里头内置操作记录的实现
(1)好处,简洁,不必使用aop
(2)坏处,代码与dml方法耦合
2、不采用类继承方式,采用aop,拦截dml方法,记录操作记录
(1)好处,操作记录与功能代码分离
(2)坏处,使用aop,对方法命名等可能需要规范,或采取其他措施
二、主要的技术问题
1、页面展示的字段的中文名
(1)配置文件
(2)加注解实现(在domain里头注解)
(3)从数据库读取(直接配置在数据库中)
2、对象关联对象的展示
(1)设计操作记录表,记录操作的类,详情表,记录更改的字段
3、枚举类型值的展示
(1)从枚举类映射到中文
3、diff变动值的方法
(1)利用orm的特性,来查看变动的值
(2)自己手工diff变动值
a、对象属性的变动(有null值的情况怎么判断)
b、对象的属性不是简单数据类型的情况 (如何判断,递归,还是单独判断)
(3)变动值的记录
a、只记录笼统的变动,不区分新旧值,比如记录变动旧值到新值的json
b、结构化记录新旧值, 记录更新的字段,新值,旧值
4、批量操作数据时的操作记录
(1)批量操作数据时,怎么处理操作记录更优化
三、实现方案
1、aop实现操作记录
(1)spring aop:拦截insert,update,delete操作,
在before的时候,记录修改前的旧对象(如果涉及属性不是简单类型的,如何处理?)
在after returning的时候,记录更新后的对象
(2)diff操作,取出变动的值 (对象的属性不是简单数据类型处不处理,怎么处理)