CRUD 使用 Hibernate 但没有任何实体

Posted

技术标签:

【中文标题】CRUD 使用 Hibernate 但没有任何实体【英文标题】:CRUD using Hibernate but without any entities 【发布时间】:2011-09-28 10:35:07 【问题描述】:

有可能做到这一点吗?我知道 Hibernate 是一个 ORM 工具,它可以将对象映射到数据库中的表。所以我们需要让实体在对应的表上做 CRUD。

但在我们的应用程序中,实体将是动态的,即管理员用户可以动态创建人员、位置表格,然后表格也将在数据库中动态生成。

我们可以使用 hibernate 来做到这一点,或者我们将不得不使用简单的 JDBC 来做到这一点?我们不想使用 JDBC,因为我们希望我们的应用程序在不同的数据库上运行,例如 mysql、mssql 和 oracle。

请帮忙。

【问题讨论】:

【参考方案1】:

可以在没有实体的情况下使用 Hibernate。看这里: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-dynamicmodels

【讨论】:

【参考方案2】:

这是不可能的,我什至无法想象这应该如何工作。老实说,您的应用程序的整个设计看起来很可疑,但没关系。

Hibernate 是关于对象的——如果您事先不知道表结构,则无法创建映射到这些表的对象,也无法使用它们。您可以改用映射 (column -> value),但 Hibernate 不支持这种方法。

所以你不得不回退到 JDBC(但是大声喊叫,使用像 MyBatis 或 JdbcTemplate 这样的抽象),因为 Hibernate 不支持这种方法。

【讨论】:

您好,感谢您的回复。我也有同样的想法。我猜将不得不使用JDBC。 :)【参考方案3】:

关系数据库不适用于此用例。你可能会过得更好 使用一些键值存储/nosql 解决方案

【讨论】:

以上是关于CRUD 使用 Hibernate 但没有任何实体的主要内容,如果未能解决你的问题,请参考以下文章

Generic Hibernate DAO

Hibernate Validator with Hibernate Dynamic Models (No Entity Class)

简单的类似 java 脚手架的 CRUD 生成器

为 Hibernate 创建一个通用的 DAO 类

具有实体框架的CRUD WEB API

org.hibernate.AnnotationException:没有为使用 JPA XML 实体映射的实体指定标识符