Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 将实体持久化到Java数据库_Database_Jpa_Persistence - Fatal编程技术网

Database 将实体持久化到Java数据库

Database 将实体持久化到Java数据库,database,jpa,persistence,Database,Jpa,Persistence,我刚刚开始在使用webapps时使用持久性和数据库。我已经创建了几个实体类,并在Eclipse中设置了一个数据库连接,但我不确定如何从这些实体生成表。到目前为止,我只想到了这些: public class Main { @Resource static UserTransaction utx; @PersistenceUnit static EntityManagerFactory emf; public static void main(String[

我刚刚开始在使用webapps时使用持久性和数据库。我已经创建了几个实体类,并在Eclipse中设置了一个数据库连接,但我不确定如何从这些实体生成表。到目前为止,我只想到了这些:

public class Main {

    @Resource
    static UserTransaction utx;

    @PersistenceUnit
    static EntityManagerFactory emf;

  public static void main(String[] args) throws Exception {
    EntityManager em = emf.createEntityManager();
    utx.begin();
    em.joinTransaction();

    User user = new User();
    user.setUsername("cvolkernick");

    em.persist(user);

    utx.commit();

    em.flush();

    em.close();
    emf.close();
  }
}

您可以使用DALIJPA工具从实体声明创建表。只要您的项目配置了JPA方面,您就可以访问这些工具。从实体创建表非常简单,只需右键单击项目,然后浏览关联菜单,如下图所示:

请注意,最好以这种方式创建表,或者自己手工编写DDL语句。不建议让JPA提供程序为您创建表,因为您将无法将表定义置于版本控制之下。它们也不是最理想的,而且是最危险的。即使对于小项目,也不值得这么麻烦,因为JPA提供者(EclipseLink或Hibernate)生成微调DDL语句的能力非常有限。在任何情况下,如果您希望JPA提供商为您完成这项工作,详情如下:

如果您的JPA提供商是EclipseLink

您的persistence.xml文件应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'none, 'drop-and-create-tables' and 'create-tables' -->
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <!-- valid values include 'both', 'database' and 'sql-script' -->
            <property name="eclipselink.ddl-generation.output-mode" value="database"/>
            ...
        </properties>
    </persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'validate', 'update', 'create' and 'create-drop' -->
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            ...
        </properties>
    </persistence-unit>
</persistence>
与EclipseLink值不同,Hibernate的值不能从Eclipse的持久性XML编辑器中配置。您可以在中找到其他Hibernate属性


另外,请注意,对于EclipseLink和Hibernate,您可能需要指定其他属性,如连接池配置和数据库方言,以帮助模式生成器。

您可以使用Dali JPA工具从实体声明创建表。只要您的项目配置了JPA方面,您就可以访问这些工具。从实体创建表非常简单,只需右键单击项目,然后浏览关联菜单,如下图所示:

请注意,最好以这种方式创建表,或者自己手工编写DDL语句。不建议让JPA提供程序为您创建表,因为您将无法将表定义置于版本控制之下。它们也不是最理想的,而且是最危险的。即使对于小项目,也不值得这么麻烦,因为JPA提供者(EclipseLink或Hibernate)生成微调DDL语句的能力非常有限。在任何情况下,如果您希望JPA提供商为您完成这项工作,详情如下:

如果您的JPA提供商是EclipseLink

您的persistence.xml文件应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'none, 'drop-and-create-tables' and 'create-tables' -->
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <!-- valid values include 'both', 'database' and 'sql-script' -->
            <property name="eclipselink.ddl-generation.output-mode" value="database"/>
            ...
        </properties>
    </persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8"?>
<persistence ...>
    <persistence-unit ...>
        ...
        <properties>
            <!-- valid values include 'validate', 'update', 'create' and 'create-drop' -->
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
            ...
        </properties>
    </persistence-unit>
</persistence>
与EclipseLink值不同,Hibernate的值不能从Eclipse的持久性XML编辑器中配置。您可以在中找到其他Hibernate属性


另外,请注意,对于EclipseLink和Hibernate,您可能需要指定其他属性,如连接池配置和数据库方言,以帮助架构生成器。

总体而言,您的回答非常有用,谢谢-结果是我的实体有一些问题。总体而言,您的回答非常有用,谢谢-原来我的实体有一些问题。