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