我刚开始使用持久性和数据库来使用webapps。我创建了几个Entity类,并在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();
}
}
答案 0 :(得分:3)
您可以使用Dali JPA工具从实体声明创建表。只要您的项目配置了JPA方面,您就可以访问这些工具。从实体创建表就像右键单击项目一样简单,然后浏览上下文菜单,如下面的屏幕截图所示:
请注意,最好以这种方式创建表,或者自己手动编写DDL语句。建议不要让JPA提供程序为您创建表,因为您将失去将表定义置于版本控制之下的能力。它们也不是最理想的not meant to be used in production。即使是小型项目,也不值得麻烦,因为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>
您可以通过使用Persistence XML编辑器打开persistence.xml
文件,从Eclipse配置这些值:
可以在EclipseLink wiki。
中找到EclipseLink架构生成属性和值的详细信息如果您的JPA提供程序是Hibernate :
您的persistence.xml文件应如下所示:
<?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的Persistence XML编辑器配置。您可以在Hibernate Core documentation中找到其他Hibernate属性。
另外,请注意,在EclipseLink和Hibernate的情况下,您可能需要指定其他属性,如连接池配置和数据库方言,以帮助架构生成器。