2014-12-03 18 views
0

我有一个在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应用:运行。

问题:应用程序启动后,我可以查看索引页,但数据库未被访问或修改。

  1. 我想要自动创建数据库和表。我知道hibernate.hbm2ddl.auto = create创建表。它是否也创建数据库,还是必须手动创建?

  2. 我的代码中只有一个实体和基本的tapestry页面。我是否至少需要定义一个EntityManager来使程序创建表?

  3. 我必须同时拥有persistence.xml和hibernate.cfg.xml吗?看起来有些属性是多余的...

  4. 如果我想将Hibernate用作JPA实现而不是特定于hibernate的API,那么配置文件中的属性是否正确?

回答

0

首先添加依赖关系的POM MySQL的 -

<dependency> 
    <groupId>org.apache.tapestry</groupId> 
    <artifactId>tapestry-hibernate</artifactId> 
    <version>${tapestry-release-version}</version> 
</dependency> 

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <version>${hibernate-tapestry-version}</version> 
</dependency> 

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>${mysql-connector-version}</version> 
</dependency> 

,并具有以下配置

<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/tapestry_db?createDatabaseIfNotExist=true</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password">password</property> 
     <property name="hbm2ddl.auto">update</property> 
     <property name="hibernate.show_sql">false</property> 
     <property name="hibernate.format_sql">true</property> 
    </session-factory> 
</hibernate-configuration> 

这是工作修改hibernate.cfg.xml文件为了我。

相关问题