| 个人资料豆浆油条日志列表 | 帮助 |
|
10月10日 PersistentEnum新项目自然要有新念头。
捧着上个月月初写下的UML类图,满头的问号,仿照Workflow做的Step,又是Privilege,Request上还画了一个1..1的自相关,最恐怖的要数MessageStrategy。唯一记得的,是花了N长时间弄得CronExpresstion。
先把UML重构一把,涂上醒目的颜色,心里清楚了一些,有两个族需要做subclass,可是又超过6个类是表示状态的Enum。
5分钟搞定类结构和hbm.xml,突然对PersistentEnum钟情起来,因为之前也是各处出现的这种东西要么就做成static final了,要么做成类型安全枚举了,有的还给出了ResouceBundle弄了些中文。但是,持久的一点花头都没有,int,String无出其右。写了那么多注释也对安全毫无帮助。
Hibernate2.1上
package net.sf.hibernate;
/**
* Implementors of <tt>PersistentEnum</tt> are enumerated types persisted to * the database as <tt>SMALLINT</tt>s. As well as implementing <tt>toInt()</tt>, * a <tt>PersistentEnum</tt> must also provide a static method with the * signature:<br> * <br> * <tt>public static PersistentEnum fromInt(int i)</tt> * * @author Gavin King * @deprecated Support for PersistentEnums will be removed in 2.2 */ public interface PersistentEnum { public int toInt(); } reference上让这么用,但是明摆着不想让人用好,找了好一会儿,看javaeye去年也有人讨论这deprecate的方法怎么绕,UserType我以前也写过就是没写过Enum的,而且那次的记忆完全是灰色的。
找到了一篇hibernate上的doc, 改了一下,仿佛可用?
嗯……开始玩测试驱动吧,写了一个测试,run,run,...run.
去掉了发现的30来个错误,最后变绿了,哈哈
太好了,int,String这么缺乏表达力的东西终于可以说88了,而且这样写出的类型安全枚举十分的干净。不错不错 引用通告此日志的引用通告 URL 是: http://b051.spaces.live.com/blog/cns!9E2D0BC71827D4E9!226.trak 引用此项的网络日志
|
|
|