我有一个在Apache Tomcat上运行的MySQL服务器。什么是用于组合MySQL-Server/Apache Tomcat和使用Hibernate/JPA的Tapestry项目的配置?
我也通过Quickstart Archetype创建了Tapestry项目。然后我添加了对tapestry-hibernate和POM中的mysql连接器的依赖关系。
<dependency>
<groupId>org.apache.tapestry</groupId>
<artifactId>tapestry-hibernate</artifactId>
<version>${tapestry-release-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
我已经创建了具有适当注释(实体,Id,表格,列等)的实体。
我不想使用Hibernate API,而是使用Hibernate JPA“子集”。
我有java/main/resources/META-INF文件夹中的persistence.xml和java/main/resources文件夹中的hibernate.cfg.xml。
persistence.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="2.0">
<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.show_sql" value = "true" />
<property name="hibernate.format_sql" value = "true" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/someDB" />
<property name="javax.persistence.jdbc.user" value="someUser" />
<property name="javax.persistence.jdbc.password" value="somePassword" />
</properties>
</persistence-unit>
</persistence>
我的hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- For use of Hibernate with a MySQL-DB over a webserver -->
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/someDB"</property>
<property name="hibernate.connection.username">someUser</property>
<property name="hibernate.connection.password">somePassword</property>
<!-- List of XML mapping files -->
</session-factory>
</hibernate-configuration>
我使用码头开始Tapestry应用:运行。
问题:应用程序启动后,我可以查看索引页,但数据库未被访问或修改。
我想要自动创建数据库和表。我知道hibernate.hbm2ddl.auto = create创建表。它是否也创建数据库,还是必须手动创建?
我的代码中只有一个实体和基本的tapestry页面。我是否至少需要定义一个EntityManager来使程序创建表?
我必须同时拥有persistence.xml和hibernate.cfg.xml吗?看起来有些属性是多余的...
如果我想将Hibernate用作JPA实现而不是特定于hibernate的API,那么配置文件中的属性是否正确?