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类中成员(如属性、方法)的含义一种语法形式。大家可能对这句话还没太理解,那么让我来举个例子说明一下。
上面是一个普通的Java类。其中蓝色的三行就是注释的语句。其中@Entity表示的是整个MyClass的含义。而@MethodAnnotation和@MethodAnnotation(attr=”attrvalue”)分别表示的是method1和method2的含义。那么@后跟的是什么呢?@Entity
public class MyClass
...{
@MethodAnnotation
public void method1()...{}
![]()
@MethodAnnotation(attr=”attrvalue”)
public void 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 ;
}
有了默认值,在使用它时如果需要设置的值正好就是默认值,可以不用再为注释的属性赋值。
method方法通过MyAnnotation的描述,已经具备了两个属性:name和age,它们的值分别为”sun”和20。即然能够为其设置属性,当然,也可以将这些属性读出来,以便根据这些属性对方法进行处理。由于本文的主题不是讨论注释技术的,因此,对此不再做深入的探讨,感兴趣的读者可以访问http://Java.sun.com/j2se/1.5.0/docs/guide/language/了解更详细的信息。public class TestAnnotation
...{
@ MyAnnotation
public void method()...{}
}
0
相关文章
