首页 > 学院 > 开发设计 > 正文

开源技术:Hibernate 3注释简介

2019-11-17 06:04:33
字体:
来源:转载
供稿:网友

  在过去几年里,Hibernate不断发展,几乎成为java数据库持久性的事实标准。它非常强大、灵活,而且具备了优异的性能。在本文中,我们将了解如何使用Java 5 注释来简化Hibernate代码,并使持久层的编码过程变得更为轻松。

  传统上,Hibernate的配置依靠于外部 xml 文件:数据库映射被定义为一组 XML 映射文件,并且在启动时进行加载。创建这些映射有很多方法,可以从已有数据库模式或Java类模型中自动创建,也可以手工创建。无论如何,您最终将获得大量的 Hibernate 映射文件。此外,还可以使用工具,通过javadoc样式的注释生成映射文件,尽管这样会给您的构建过程增加一个步骤。

  在最近发布的几个Hibernate版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法。借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件——一切都会按照您的想法来定义——注释直接嵌入到您的 Java 类中,并提供一种强大及灵活的方法来声明持久性映射。籍由自动代码完成和语法突出显示功能,最近发布的Java IDE也为其提供了有力的支持。

  Hibernate Annotation还支持新的 EJB 3 持久性规范。这些规范旨在提供一种标准化的 Java 持久性机制。由于 Hibernate 3 还提供了一些扩展,因此您可以十分轻松地遵从这些标准,并使用 EJB 3 编程模型来对 Hibernate 持久层进行编码。

  现在,让我们来动手使用Hibernate Annotation。

安装 Hibernate Annotation

  要使用 Hibernate Annotation,您至少需要具备 Hibernate 3.2和Java 5。可以从 Hibernate 站点 下载 Hibernate 3.2 和 Hibernate Annotation库。除了标准的 Hibernate JAR 和依靠项之外,您还需要 Hibernate Annotations .jar 文件(hibernate-annotations.jar)、Java 持久性 API (lib/ejb3-persistence.jar)。假如您正在使用 Maven,只需要向 POM 文件添加相应的依靠项即可,如下所示:

    ...    <dependency>      <groupId>org.hibernate</groupId>      <artifactId>hibernate</artifactId>      <version>3.2.1.ga</version>    </dependency>    <dependency>      <groupId>org.hibernate</groupId>      <artifactId>hibernate-annotations</artifactId>      <version>3.2.0.ga</version>    </dependency>    <dependency>      <groupId>javax.persistence</groupId>      <artifactId>persistence-api</artifactId>      <version>1.0</version>    </dependency>    ...

  下一步就是获取 Hibernate 会话工厂。尽管无需惊天的修改,但这一工作与使用 Hibernate Annotations有所不同。您需要使用 AnnotationConfiguration 类来建立会话工厂:

sessionFactory = new
AnnotationConfiguration().buildSessionFactory();

  尽管通常使用 <mapping> 元素来声明持久性类,您还是需要在 Hibernate 配置文件(通常是 hibernate.cfg.xml)中声明持久性类:

<!DOCTYPE hibernate-configuration PUBLIC    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">        <hibernate-configuration>          <session-factory>            <mapping class="com.onjava.modelplanes.domain.PlaneType"/>            <mapping class="com.onjava.modelplanes.domain.ModelPlane"/>          </session-factory>        </hibernate-configuration>

  近期的许多 Java 项目都使用了轻量级的应用框架,例如 SPRing。假如您正在使用 Spring 框架,可以使用 AnnotationSessionFactoryBean 类轻松建立一个基于注释的 Hibernate 会话工厂,如下所示:

<!-- Hibernate session factory -->  <bean id="sessionFactory"         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">   <property name="dataSource">     <ref bean="dataSource"/>   </property>   <property name="hibernateProperties">     <props>       <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>       <prop key="hibernate.hbm2ddl.auto">create</prop>       ...     </props>   </property>   <property name="annotatedClasses">     <list>       <value>com.onjava.modelplanes.domain.PlaneType</value>       <value>com.onjava.modelplanes.domain.ModelPlane</value>       ...     </list>   </property> </bean>

第一个持久性类



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表