技术开发 频道

Hibernate应用系列之四映射篇


【IT168 专稿】

    Hibernate是近年非常流行的对象持久化框架(Framework)。这一点从Hibernate的名子就可以看得出,Hibernate的中文意思是“冬眠”,这就意味着一动不动,当然也就是持久的意思了。

    Hibernate在映射时有一个映射三角形。映射三角形的三个顶点是Hibernate所能互相转换的三种映射实体。它们分别是:
 Java持久化类。
 映射文件。
 数据库表。
   
    拥有以上三种实体中的任意两个,就可以得到另外一个。在Hibernate2.0及以前的版本中,只能通过Java类和映射文件配合才能将一个数据库表持久化。然而这样做将会带来很多不利的影响。如设置xml格式的映射文件是非常繁琐的;由于映射关系是单独保存在映射文件中的,这样不利于直观地描述Java持久化类和数据库表的映射关系。
   
    以上所述的种种弊端随着Hibernate3.0的发布而得到很好的解决。由于Hibernate3.0使用了J2SE5.0的注释(Annotations)技术,因此,Hibernate3.0不仅可以使用映射文件描述和数据库表的映射关系,而且可以将这种映射关系直接在Java源程序中描述,使Java持久化类成为描述的Java类。说到这,大家一定会问,什么是注释(Annotations)技术呢?下面就让我们一起来了解一下什么是J2SE5.0的注释技术。

    一、 注释技术
    如果用一句话解释什么是注释技术,那么这句话就是:注释就是用于描述Java类中成员(如属性、方法)的含义一种语法形式。大家可能对这句话还没太理解,那么让我来举个例子说明一下。
@Entity public class MyClass { @MethodAnnotation public void method1(){} @MethodAnnotation(attr=”attrvalue”) public void method2(){} }
    上面是一个普通的Java类。其中蓝色的三行就是注释的语句。其中@Entity表示的是整个MyClass的含义。而@MethodAnnotation和@MethodAnnotation(attr=”attrvalue”)分别表示的是method1和method2的含义。那么@后跟的是什么呢?
   
    实际上注释也是需要定义的,@后跟的就是已经定义的注释。它的定义有些类似于接口(Interface)。一个最简单的注释定义代码如下:
public @Interface MyAnnotation
{
}
    以上代码如果删除蓝色的@后,就是接口的定义。我们可以在任何Java程序中使用它。
public class TestAnnotation
{
@ MyAnnotation
public void method(){}
}

    当然,MyAnnotation只是个空的注释,它什么作用也不起。如果要加入相应的属性,可以象在接口中加入方法一下加入相应的属性。
public @Interface MyAnnotation { String name(); int age(); } 可以按如下语法使用上面的注释。 public class TestAnnotation { @ MyAnnotation(name=”sun”, age=20) public void method(){} } 还可以给注释的属性加上默认值。 public @Interface MyAnnotation { String name() default “sun” ; int age() default 20 ; }

有了默认值,在使用它时如果需要设置的值正好就是默认值,可以不用再为注释的属性赋值。
public class TestAnnotation { @ MyAnnotation public void method(){} }
    method方法通过MyAnnotation的描述,已经具备了两个属性:name和age,它们的值分别为”sun”和20。即然能够为其设置属性,当然,也可以将这些属性读出来,以便根据这些属性对方法进行处理。由于本文的主题不是讨论注释技术的,因此,对此不再做深入的探讨,感兴趣的读者可以访问http://Java.sun.com/j2se/1.5.0/docs/guide/language/了解更详细的信息。 

   
0
相关文章