使用PreUpdate来维护实体更新信息的问题

在JPA中,我们在实体更新前(@PreUpdate)来维护实体的更新信息(lastModifiedBy、lastModifiedOn)。

但是这样做会存在问题。主要问题是,这个维护信息是在数据库层面的,而我们希望记录的是逻辑层面的。

下面通过一个场景来展示问题所在。
在删除角色之前,我们要先断开角色与用户的关联关系,然后才删除角色。下面是删除角色的manager层代码(RoleManager.remove(Integer id)):

	@Override
	public void remove(Integer id) {
		// 删除角色前,先更新拥有该角色的用户
		List<User> users = userManager.listByRoleId(id);
		Role role = get(id);
		for (User user : users) {
			user.getRoles().remove(role);
			userManager.saveOrUpdate(user);
		}

		getEntityDao().remove(role);
	} 

在这段代码里,任何一个与要删除角色相关联的用户,都会被更新,同时系统也会记录用户的更新信息(lastModifiedBy、 lastModifiedOn)。而事实上,我们可能是希望在用户的基本信息修改时去维护这两个字段(业务层面),在用户角色发生变化时不去维护这些字 段。

这里先记录问题。
由于问题涉及到我们系统设计层面的问题,希望大家参与讨论,踊跃发表自己的意见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值