个人资料豆浆油条日志列表 工具 帮助
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了,而且这样写出的类型安全枚举十分的干净。不错不错

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://b051.spaces.live.com/blog/cns!9E2D0BC71827D4E9!226.trak
引用此项的网络日志