Hibernate user type with Annotation

时间:2008-03-25 16:05:58  来源:  作者:
前段时间写了本书《Hibernate 3和Java Persistence API 程序开发从入门到精通》,书中着重介绍了在Hibernate/JPA中使用Annotation。最近有读者来信询问UserType,再加上最近看到有的人在项目中滥用Hibernate的user type,想在这里说几句。

使用UserType首先要弄清楚它的目的。大家知道Hibernate解决的主要是对象数据库阻抗失衡的问题,也就是如何将一个或多个对象保存到一个或多个数据库表格中。这其中有很多方法,其实大部分情况下采用@Embeddable和@Embedded 就可以解决问题了,只有嵌入对象方式无法满足要求时,或者是Hibernate默认的持久化方式无法满足要求时,才应该考虑UserType。总之记住一 个原则,不到山穷水尽,不要轻易使用UserType。还有一个要慎重考虑使用UserType的原因是:一旦采用了UserType,你的项目就脱离了 JPA,而直接和Hibernate耦合在一起了。

扩展UserType主要分为两种:
  1. immutable
  2. mutable
今天我先举个immutable的例子。

Java 5提出了一个新的enum类,JPA提供的标准方法是保存enum的name或者是ordinal。这种默认方式能够满足新开发的项目,但是对于一些老项目翻新并不一定适用。下面我们来看一个例子:

public class Status {

    
public static final int ACTIVATED = 5;
    
public static final int DEACTIVATED = 6;
}

文章评论

共有 位网友发表了评论 查看完整内容