在過去幾年里,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 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>
|
新聞熱點
疑難解答