JSP和Hibernate的数据库部署

时间:2015-01-12 14:00:48

标签: hibernate jsp

我正在设计我的第一个JSP应用程序,它将使用hibernate来管理一个非常简单的数据库(一些带有几个外键的表)。 通过研究一些关于hibernate的教程,我了解到hibernate的一个重要特性是它在首次访问时自动创建db表。 那么在生产机器上部署jsp应用程序的常见最佳做法是什么:

1)只是不关心数据库/表的创建,让hibernate完成这项工作"即时#34;

2)使用ServletContextListener在首次运行时检查/安装数据库

由于

1 个答案:

答案 0 :(得分:0)

首先,我建议您使用JSF而不是JSP。 JSP是一种非常古老的Java技术,除非您的用户界面/体验非常基础,否则需要付出很多努力才能使用户友好。 Java EE的最新教程和官方文档不再讨论JSP了,因为它的大部分功能现已合并到JSF中。

首先看看JSF可能看起来很复杂和困难,但我可以向您保证,在很短的时间内您将创建外观漂亮的Web应用程序。

对于数据库访问,我强烈建议您将JPA与Hibernate一起用作持久性提供程序。 JPA是连接关系甚至NoSQL数据库的标准方法。

更具体地说,您的问题是,JPA仅在一个文件(persistence.xml)中配置。您有三个数据库/表创建选项,由JPA属性 javax.persistence.schema-generation.database.action 定义。可能的值包括 create drop-and-create 。第一个值根据需要创建表,第二个值在创建实体管理器工厂时删除并重新创建表。如果该属性不存在,则必须手动创建表。

在生产环境中,我不喜欢自动创建表格,因此我不会使用此功能。对于测试环境,drop-and-create可以很方便。

从您建议的2个选项我更喜欢2号,但我不喜欢它。我宁愿手动创建数据库和表。

示例persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="ExamplePU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <non-jta-data-source>java:/jdbc/example</non-jta-data-source>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>