【问题标题】:@Entity with JSF, persist "hello world" with JPA使用 JSF 的 @Entity,使用 JPA 坚持“hello world”
【发布时间】:2012-04-23 06:14:38
【问题描述】:

Oracle 很好地描述了如何创建@Entity。但是,我并不清楚如何实际添加/删除表。我也喜欢印度玫瑰explanation,但只是想澄清一下大致的想法。

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

只是想在我开始之前澄清一下总体思路。

【问题讨论】:

    标签: java jsf jpa ejb cdi


    【解决方案1】:

    一般来说,您至少有两种选择:

    1. 创建数据库表和引用,然后基于数据库表构建实体类(现代 IDE 提供了从 db 表自动生成实体类的工具)

    2. 手动编写实体类并从这些类创建数据库。 JPA 提供者通常通过在 persistence.xml 中设置一个特殊参数来允许这样做,例如对于 Eclipse 链接:

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

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

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

    只有在不存在时才会创建新表。

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

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

    【讨论】:

    • wikipedia 列出了不同的“供应商”。需要选择其中之一,没有“默认”?
    • 是的,有不同的实现/供应商。 Glassfish 捆绑了 Eclipselink。每个实现都有其专有的扩展,必须手动添加到您的项目中(如果您想使用它们)。
    • 啊,我看到 TopLink 现在是 Eclipselink 并且拥有某种 FOSS 许可。其中的政治似乎有点令人反感,但至少据称它是开源的。谢谢你的信息。
    猜你喜欢
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多