我想实现一个简单的ORM程序,使用JPA和hibernate。我想尽可能地将其写成可移植的,这样当我提供不同的持久性提供者时,只需要更改persistence.xml文件。以下是我拥有的persistence.xml文件。hibernate和mysql的Persistence.xml设置说“没有EntityManager的持久性提供者”
<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_2_0.xsd"
version="2.0">
<persistence-unit name="JPA_Project" transaction-type="RESOURCE_LOCAL">
<description>
Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.tutorial.prj.Book</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpatestdb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="123" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>
上面的persistence.xml文件是否正确?当我通过eclipse运行程序时,它说Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named JPA_Project
我已经将hibernate jars和mysql连接器添加到构建路径。这里有什么问题?我还看到了互联网上使用的不同类型的persistence.xml文件,如下所示。
<persistence-unit name="my_schema">
... classes ...
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://URL:3306/my_schema"></property>
<property name="hibernate.connection.username" value="my_user"></property>
<property name="hibernate.connection.password" value="my_pass"></property>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
<property name="hibernate.connection.nombre" value="my_schema" />
</properties>
</persistence-unit>
在这里,属性名是从我用的有所不同,背后是什么使用这些属性名称的原因是什么?哪个应该是正确的persistence.xml文件,以便于移植。
请注意,这不是一个Web应用程序。这个问题是否出现,因为它不是一个Web应用程序?可以在本地桌面应用程序中使用休眠吗?我的persistence.xml文件存储在\JPA_Project\src\META-INF
文件夹中。
你接着说:在你的POM冬眠,entitymanager'依赖? – 2015-03-25 06:12:28
我没有使用过Maven。我想在没有maven的情况下构建这个程序 – DesirePRG 2015-03-25 06:13:24
好吧,那么你添加了'hibernate-entitymanager'相关的jar包吗? – 2015-03-25 06:14:18