Hibernate 3 Annotations进阶(1)
发表于:2007-06-11来源:作者:点击数:
标签:
在过去,Hibernate 依靠外部的XML文件来配置持久化对象, 数据库 映射文件定义在一组XML映射文件里并且在程序开始的时候被装载。有很多办法来创建这些映射文件,或者自动从一个已存在的数据库模式里创建,或者手动从 java 类对象中创建。不管那种情况,你都
在过去,Hibernate 依靠外部的XML文件来配置持久化对象,数据库映射文件定义在一组XML映射文件里并且在程序开始的时候被装载。有很多办法来创建这些映射文件,或者自动从一个已存在的数据库模式里创建,或者手动从java类对象中创建。不管那种情况,你都得产生一大堆Hibernate 映射文件而结束工作。你也可以利用外部工具从javadoc-style 的注解中生成映射文件,但这给你的开发流程增加了额外的负担。
在最近的Hibernate版本里,一个新的建立在Java 5 注解之上更为优雅的方法出现了。利用新的Hibernate Annonations 库,你可以发布一次如你以前的映射文件所定义的信息,你猜到了-注解直接嵌入你的Java类文件里。注解带来了一种强大灵活地声明持久化映射的办法。在最新版的几个Java集成开发环境里都很好的支持,并带有代码自动完成和语法高亮功能。
Hibernate annotations也支持最新的EJB 3持久化规范,这些规范目的是提供一个标准的Java持久化机制。当然Hibernate 3也提供了更多的解决方案,你能非常容易的靠近保准并且利用EJB 3编程模型编写你的Hibernate持久化层。
现在让我们一步步了解Hibernate Annotations。
安装 Hibernate Annotations
为了使用Hibernate Annotations,你需要最新的Hibernate 3.2 ,当然还有Java 5 你可以在Hibernate web site 这个网站下载Hibernate 3.2和Hibernate Annotations库。除了标准的Hibernate 库文件和必须的依赖库之外,还需要下载 Hibernate Annotations库和Java 持久化API ---ejb3-persstence.jar文件。如果你正在使用Maven,仅仅添加相应的依赖到你的DOM文件里,如下所示:
...
<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 Session 工厂。利用Hibernate Annotations与不使用它创建Hibernate session工厂有一点不同,虽然不需要大幅度修改。你只需须简单地使用AnnotationConfiguration类安装你的session工厂:
sessionFactory
=new AnnotationConfiguration().buildSessionFactory(); |
一般的,你需要通过元素在Hibernate配置文件里(hibernate.cfg.xml)声明持久化类。
<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框架,你可以容易地利用AnnotationSessionFactory类装配一个基于Annotations 的Hibernate Session Factory,如下:
<!-- 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>
|