我是 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/