转帖:http://xiaoqing.me/2011/12/domain-model-createdat-updatedat/
编程时,大家会经常用到两个字段,createdAt和updatedAt。不但很多公司有这样的数据库规范要求,一些框架对它们也有天然的支持。不过你知道如何正确使用它们吗?别忙,先让我们看一个小例子。
框框网是一家刚起步的B2C网站,为了招揽人气,准备在春节前搞一个促销专区,吸引大家抢购。做为框框网的开发人员,小明参与了这个任务的开发。他收到的需求是:管理员可以在指定时间把促销商品上架,用户可以看到并购买。小明有一定的工作经验,稍做分析,就建立了名为“促销商品”(PromotionItem)的对象,包含两个状态:NEW和ONLINE,分别表示新建和已上架。并且设计了一个额外的字段onlineTime,如图所示:
[align=center][img]http://dl.iteye.com/upload/attachment/0072/0802/dd1af7ae-84cb-3917-ba9d-73d74275c4de.png[/img][/align]
这样,不但可以知道促销商品是否已经上架,如果需要的话,管理员也可以知道上架的时间。
开发完成以后,一切工作正常。几天后,小明接到业务的反馈:如果缺货或者万一出错,管理员可以把促销商品撤下来,即下架。小明挠了挠脑袋,添加了一个新的状态:OFFLINE来表示下架。但是如果不添加offlineTime,万一业务想查看商品啥时候下架怎么办?考虑来考虑去,又在数据库表上添加了一个字段offlineTi
编程时,大家会经常用到两个字段,createdAt和updatedAt。不但很多公司有这样的数据库规范要求,一些框架对它们也有天然的支持。不过你知道如何正确使用它们吗?别忙,先让我们看一个小例子。
框框网是一家刚起步的B2C网站,为了招揽人气,准备在春节前搞一个促销专区,吸引大家抢购。做为框框网的开发人员,小明参与了这个任务的开发。他收到的需求是:管理员可以在指定时间把促销商品上架,用户可以看到并购买。小明有一定的工作经验,稍做分析,就建立了名为“促销商品”(PromotionItem)的对象,包含两个状态:NEW和ONLINE,分别表示新建和已上架。并且设计了一个额外的字段onlineTime,如图所示:
[align=center][img]http://dl.iteye.com/upload/attachment/0072/0802/dd1af7ae-84cb-3917-ba9d-73d74275c4de.png[/img][/align]
这样,不但可以知道促销商品是否已经上架,如果需要的话,管理员也可以知道上架的时间。
开发完成以后,一切工作正常。几天后,小明接到业务的反馈:如果缺货或者万一出错,管理员可以把促销商品撤下来,即下架。小明挠了挠脑袋,添加了一个新的状态:OFFLINE来表示下架。但是如果不添加offlineTime,万一业务想查看商品啥时候下架怎么办?考虑来考虑去,又在数据库表上添加了一个字段offlineTi