java - persistence.xml 中的值在 EJB 中意味着什么?

标签 java jboss7.x persistence.xml

我是 Java、JBoss 和 JDeveloper 的新手。我的遗留项目有这个 persistence.xml 文件:

   <persistence-unit name="DoDSRMGR">
    <jta-data-source>java:/DoDSRDS</jta-data-source>
    <class>dodsr.ManifestsPass1</class>
    <class>dodsr.model.ManifestsPass2</class>
       <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
         <property name="javax.persistence.jtaDataSource" value="java:/DoDSRDS"/>
        </properties>
       </persistence-unit>
   </persistence>

我的问题是文件中的值是什么意思以及它们的用途是什么?另外,该文件属于 EAR 文件 META-INF 或 JAR 文件 META-INF 中的什么位置? name="DoDSRMGR"指定的意义是什么?这是我从 Java 程序调用时 bean 的名称还是应用程序名称?另外“java:/DoDSRDS”是做什么的?

这是从桌面应用程序调用 bean 的方法吗: (DodsrUserSessionEJB) ctx.lookup("/dodsr/"+ejbName+"/remote");

最佳答案

<persistence-unit name="DoDSRMGR">该行允许您为持久性单元命名。当您想以这种方式实例化 EntityManager 时,可以使用持久单元名称:

EntityManager eMgr = Persistence.createEntityManagerFactory("Your persistence unit name").createEntityManager();

EntityManager 是帮助您在数据库中选择、保留、更新和删除 JPA 实体的对象。

<jta-data-source>java:/DoDSRDS</jta-data-source>这一行告诉您将如何管理持久性事务(持久、更新和删除实体)。如果你不指定这一行,每次你想从数据库中持久化、更新或删除一个实体时,你必须首先获取一个事务实例并调用 begin()在你坚持/更新/删除你的实体之后,然后你调用 commit()方法。

由于您的 XML 中已包含 jta-data-source 元素,因此无需手动调用 begin()commit()方法。您的应用程序服务器通过值 "java:/DoDSRDS" 标识的事务资源来管理事务性。

此 XML 文件可以放置在 META-INF 或 WEB-INF 文件夹中。

关于java - persistence.xml 中的值在 EJB 中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24209602/

相关文章:

java - 使用四个层次结构存储字符串值

java - Android应用程序错误: "unfotunatley Application has stopped"

java - 如何用Java实现 "Round Robin"负载均衡Web服务器

java - JBoss AS 7.1 上的 session 计数

JPA/EclipseLink - 使用一条 SQL 语句创建多行脚本源

java - Spring Boot 中所有 @RabbitListener-s 使用 RabbitMQ 消息

java - JBoss AS 7 是否启用了 AOP?

java - web.xml-不处理多个异常

jpa - 如何在内存数据库脚本中为 h2 指定字符编码?

java - 有没有办法扫描 JPA 实体而不在 persistence.xml 文件中声明持久类?