2012-04-10 57 views
0

Oracle很好地描述了如何使@Entity。但是,我不清楚如何实际添加/删除表格。我也喜欢玫瑰印度explanation,但只是想澄清一般的想法。@实体与JSF,坚持与JPA的“你好世界”

对于具有CDI的JSF JEE6应用程序,我基本上可以创建一个@Entity类,在@Named bean中实例化一些实例,并使用Bean中的EntityManager将(CRUD操作)写入MySQL数据库?我可以使用Glassfish自带的默认JPA?

只是想澄清一般的想法,然后再开始。

回答

4

一般来说,你至少有两个选项:

  1. 创建数据库表和参考文献,然后根据数据库中的表建立实体类(现代IDE从数据库自动生成实体类提供工具表)

  2. 手动编写实体类并从这些类创建数据库。 JPA提供者通常通过在例如10 persistence.xml中设置特殊参数来允许这种情况。对于的EclipseLink:

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/> 

删除所有现有的表,并创建从实体类(在开发过程中特别有用)换新的,而

<property name="eclipselink.ddl-generation" value="create-tables"/> 

只会创建一个新表,如果有不存在。

我可以使用Glassfish自带的默认JPA?

是的,对于基于规范的功能。

+0

[wikipedia](http://en.wikipedia.org/wiki/Java_Persistence_API#JPA_2.0)列出了不同的“供应商”。其中一个需要被选中,并且没有“默认”? – Thufir 2012-04-11 11:41:44

+0

是的,有不同的实现/供应商。 Glassfish附带Eclipselink捆绑。每个实现都有其专有扩展,必须手动添加到项目中(如果要使用它们)。 – 2012-04-11 11:48:04

+0

啊,我看到TopLink现在是Eclipselink并且有某种FOSS许可。这种政治看起来有点令人失望,但至少它是开源的。谢谢(你的)信息。 – Thufir 2012-04-11 13:22:46