当前位置: 首页 > 面试题库 >

我需要 persistence.xml中的元素?

终睿
2023-03-14
问题内容

我有一个非常简单的persistance.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

    <persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL">
        <class>pl.michalmech.eventractor.domain.User</class>
        <class>pl.michalmech.eventractor.domain.Address</class>
        <class>pl.michalmech.eventractor.domain.City</class>
        <class>pl.michalmech.eventractor.domain.Country</class>

        <properties>
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>

</persistence>

而且有效。

但是,当我删除<class>元素时,应用程序看不到实体(所有类都带有注释@Entity)。

是否有自动扫描@Entity类的机制?


问题答案:

jar-file您可以使用persistence.xml 。从Java EE
5教程中

<persistence>
    <persistence-unit name="OrderManagement">
        <description>This unit manages orders and customers.
            It does not rely on any vendor-specific features and can
            therefore be deployed to any persistence provider.
        </description>
        <jta-data-source>jdbc/MyOrderDB</jta-data-source>
        <jar-file>MyOrderApp.jar</jar-file>
        <class>com.widgets.Order</class>
        <class>com.widgets.Customer</class>
    </persistence-unit>
</persistence>

该文件定义了一个名为的持久性单元OrderManagement,它使用JTA感知数据源jdbc/MyOrderDB。所述jar- fileclass元素指定管持久类:实体类,可嵌入类和超类映射。该jar- file元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。

对于Hibernate,请看第二章。也可以进行设置和配置以获取更多详细信息。

编辑: 实际上,如果您不介意不符合规范,则Hibernate即使在Java
SE中也支持自动检测。为此,添加hibernate.archive.autodetection属性:

<persistence-unit name="eventractor" transaction-type="RESOURCE_LOCAL">
  <!-- This is required to be spec compliant, Hibernate however supports
       auto-detection even in JSE.
  <class>pl.michalmech.eventractor.domain.User</class>
  <class>pl.michalmech.eventractor.domain.Address</class>
  <class>pl.michalmech.eventractor.domain.City</class>
  <class>pl.michalmech.eventractor.domain.Country</class>
   -->

  <properties>
    <!-- Scan for annotated classes and Hibernate mapping XML files -->
    <property name="hibernate.archive.autodetection" value="class, hbm"/>

    <property name="hibernate.hbm2ddl.auto" value="validate" />
    <property name="hibernate.show_sql" value="true" />
  </properties>
</persistence-unit>


 类似资料:
  • 问题内容: 我有一个非常简单的文件: 而且有效。 但是,当我删除元素时,应用程序看不到实体(所有类都带有注释)。 是否有自动扫描类的机制? 问题答案: 你可以使用 该文件定义了一个名为的持久性单元,它使用JTA感知数据源。所述和元素指定管持久类:实体类,可嵌入类和超类映射。该元素指定JAR文件都包含持久化类管理的打包持久单元可见,而该class元素明确命名持久化类管理。 对于,也可以进行设置和配置

  • 问题内容: 我正在使用Spring JPA和Hibernate的项目。可以在Spring applicationContext.xml 文件中指定 persistence.xml中的 大多数内容。 __ 那么是否还需要 persistence.xml ? 谢谢。 问题答案: 更新: Spring 3.1将支持免费的JPA配置,请参阅Spring 3.1 M2:配置增强 。 darioo的答案适合实

  • 这是java类文件。 这是XSD文件。 我更改了属性的类型,如属性name=“x”type=“int”。我错误如下: 文件:/d:/maheshkumar.v/workspace/javaone/javaio/xsd/img.xsd无效原因:cvc-datatype-valid.1.2.1:“143.05”不是“integer”的有效值。 它不会在例外情况下显示元素名称。整数在哪里?它不指定'im

  • 问题内容: 据我了解,使用a的“正确”方法是始终在退出块之前调用。像这样: 但是,我已经看到,没有它,代码就可以工作,甚至我从中也学会了使用它的答案 。所以我的问题是,是否必须使用它? 问题答案: 所以我的问题是,是否必须使用它? 为了进行交易而进行更新时必须使用。否则,事务管理器将发出并撤消所做的更改。 对于像您的示例这样的只读事务,无论有没有,我都认为没有实质性的区别。在这两种情况下,由事务管

  • 问题内容: 我的代码是: 在文档中: InputStream的close方法不执行任何操作。 这是否意味着我不需要关闭InputStream? 问题答案: 您确实需要关闭输入Stream,因为您提到的方法返回的流实际上是FileInputStream或该文件的某个其他子类,该子类包含文件的句柄。如果不关闭此流,则可能会导致资源泄漏。