Database 将实体持久化到Java数据库
我刚刚开始在使用webapps时使用持久性和数据库。我已经创建了几个实体类,并在Eclipse中设置了一个数据库连接,但我不确定如何从这些实体生成表。到目前为止,我只想到了这些: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[
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,您可能需要指定其他属性,如连接池配置和数据库方言,以帮助架构生成器。总体而言,您的回答非常有用,谢谢-结果是我的实体有一些问题。总体而言,您的回答非常有用,谢谢-原来我的实体有一些问题。