2

我是Hibernate的新手。为了通过 EntityManager 获取事务,我需要使用 EntityManager Factory。当我将此代码块放在我的文件中时:

EntityManagerFactory entityManagerFactory = Persistence
            .createEntityManagerFactory("Comment");

EntityManager entityManager = entityManagerFactory.createEntityManager();

EntityTransaction transaction = entityManager.getTransaction();

transaction.begin();
entityManager.persist(obj);
transaction.commit();

我得到了这个例外:

javax.persistence.PersistenceException:没有名为 Comment 的 EntityManager 的持久性提供程序

然后我意识到我需要添加一个 persistence.xml 文件:

<persistence 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" version="1.0">
  <persistence-unit name="QuestionsComments" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>Comment</class>
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/>
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.password" value="root"/>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sogdb"/>
      <property name="hibernate.max_fetch_depth" value="3"/>
    </properties>
  </persistence-unit>
</persistence>

实际上,我使用的应用程序不是服务器应用程序上的 Java(我有一个客户端应用程序)。这意味着没有包含 persistence.xml 文件的 META-INF 文件夹。

我的问题是:

1- 我需要将persistence.xml 文件放在哪里?

2-下面的代码可以吗?知道我在数据库中的表是QuestionsComments并且我将使用 Hibernate 与之相关的类是Comment

4

2 回答 2

2

如果您使用的是 Eclipse,那么将 JPA facet 添加到您的项目中可以让 Eclipse 负责为您设置这些内容。它将创建 META-INF 文件夹,并可以在其中生成存根 persistence.xml 文件。您不必在服务器上运行代码即可在 jar 文件中包含 META-INF 文件夹。

创建EntityManagerFactory时,字符串参数应该是持久性单元的名称。我建议在实体类中使用注释来指定表名、id 列等。

编辑:固定链接。

于 2013-08-14T15:24:00.603 回答
0
  1. 在Hibernate JPA 快速入门指南的这一部分中已明确回答。它进去了META-INF

  2. 查看刚刚链接的相同指南。

就我个人而言,我更喜欢 Hibernate 特定的配置hibernate.cfg.xml,带有用于映射的注释和SessionFactory用于事务访问的 Hibernate 的注释;我发现自己更容易理解——尽管这可能是因为我最初学会了如何使用 Hibernate,却不知道如何使用 JPA。

于 2013-08-14T15:26:40.793 回答