EJB3 XML映射文件

Hibernate EntityManager的最新版本(3.1.0 beta8)现在支持EJB3 XML映射文件(即部署描述符)。虽然注解被视为开发易用性和生产力的巨大进步,但有些人仍然关注将元数据与代码分离的能力。现在,在Hibernate Annotations(3.1.0 beta 10)和Hibernate EntityManager中以标准方式支持。您可以部分覆盖Java注解,或者可以通过XML编写所有元数据。最简单的解决方案是在您的ejb-jar或persistence jar中添加META-INF/orm.xml。此文件将被持久化提供程序自动考虑。或者,您可以在persistence.xml文件中添加一个<mapping-file/>元素。以下是一个EJB3 XML文件的示例

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="[=>http://java.sun.com/xml/ns/persistence/orm]"
               [=>xmlns:xsi=]"=>http://www.w3.org/2001/XMLSchema-instance"
               [=>xsi:schemaLocation=]"=>http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd"
               version="1.0">
  <package>org.hibernate.test</package>
  <entity class="Car" metadata-complete="true" access="PROPERTY">
      <table name="CARS"/>
      <named-query name="carsByManufacturer">
          <query>select c from Car c where c.manufacturer = :manufacturer</query>
          <hint name="org.hibernate.timeout" value="200"/>
      </named-query>
      <attributes>
          <id name="id">
              <generated-value strategy="AUTO"/>
              <column name="car_id"/>
          </id>
          <basic name="category" optional="false">
              <enumerated>STRING</enumerated>
          </basic>
          <many-to-one name="manufacturer">
              <join-column name="manufacturer_fk"/>
          </one-to-many>
      </attributes>
  </entity>
</entity-mappings>

Glassfish集成

我已经与Glassfish团队合作了一段时间,以确保Hibernate EntityManager与Glassfish集成良好。现在,随着规范已经冻结,集成工作进展非常顺利

  • 下载 Hibernate Core (对于HEM 3.1.0 beta 8,您需要Hibernate 3.2 CR1)
  • 将所需的hibernate(和第三方库)复制到$glassfish_home/lib
  • 调整您的persistence.xml文件以使用Hibernate EntityManager
<persistence version="1.0">
    <persistence-unit name="pu">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- JNDI name of the database resource to use -->
        <jta-data-source>jdbc/sqlserver</jta-data-source>
        <properties>
            <!-- drop and create tables at deployment if needed -->
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>

这就完成了!Glassfish设置了适当的Transaction Manager Strategy,Hibernate可以猜测大多数常见数据库的正确方言。

Hibernate EntityManager已知可以在所有最新的EJB3实现中运行。当然,它在JBoss EJB3 JBoss Embeddable EJB3 中运行得很好。

映射映射

这是一个长期请求的功能,现在它已经可用,您可以使用以下内容来映射关联Map<Element, ...>Map<Embeddable, ...>使用显式键列(多列)


返回顶部