用于小型项目的简单 Java ORM

Posted

技术标签:

【中文标题】用于小型项目的简单 Java ORM【英文标题】:Easy Java ORM for small projects 【发布时间】:2011-04-21 13:54:41 【问题描述】:

我目前正在寻找一种非常简单的方法来将简单的 Java 对象持久保存在数据库和/或 XML 和/或其他类型的数据存储中。

对于公司的大型项目,我会使用 hibernate、ibatis、datanucleus 或类似的东西。但对于小型私人项目,这将占用 80% 以上的工作时间。

我还发现了“simpleORM”,但这个需要将与数据相关的东西几乎没有编码到数据模型类中。我不太喜欢这种风格,所以这对我来说是没有选择的。

您对某些库有什么建议吗?它只需要我的对象并按原样保存/加载它们或只需很少的配置?

【问题讨论】:

iBatis的新版本叫myBatis,现在使用注解。它真的非常简单(我现在正在使用它,不需要 XML)。 mybatis.org 【参考方案1】:

你可以试试我的 ORMLite 库,它被设计为 hibernate 和 iBatis 的简单替代品。我是主要作者。它支持许多 JDBC 数据库并具有 android 后端。这是getting started section of the manual,它有一些代码示例。这里还有working examples of simple usage patterns。

【讨论】:

非常感谢格雷!这正是我一直在寻找的。我猜你是作者吧?我也在为安卓开发应用程序,虽然安卓保存数据的方式已经很不错了,我会在那里试用你的软件。【参考方案2】:

试试Norm。它是 JDBC 之上的轻量级层。它对 JDBC 调用的开销几乎为零,而且非常容易学习。

【讨论】:

看起来很有前途! 还有比Norm更好的吗? @ccleve @softwarevamp 比标准更好?或者当然不是!我写的。有什么可以改进的? 你知道 python 中的 noorm 吗?【参考方案3】:

你可以将你的对象序列化到一个文件/数据库中。

如果您想定义映射,那么您必须进行更多配置,而那里的标准 OR 映射器(如 Hibernate)并没有真正添加那么多。

【讨论】:

+1 对于某些项目来说是一个完美的选择,通常被忽视【参考方案4】:

你可以试试xstream。这是一个非常简单的 OXM 库,无需预先配置即可工作。

示例代码:

XStream xstream = new XStream();
// marshalling
String xml = xstream.toXML(domainObject);
// unmarshalling
domainObject = xstream.fromXML(xml);

【讨论】:

【参考方案5】:

对于关系数据库持久性,请尝试JPA 实现之一,例如OpenJPA。

设置开销很小。您可以让 JPA 从您的对象定义中为您创建模式和表,因此您无需手动操作任何 sql。您需要提供的只是实体上的一些注释和一个配置文件 persistence.xml。

【讨论】:

请注意,Hibernate 也是一个 JPA 实现,所以我建议您这样做,因为您似乎已经熟悉它了。【参考方案6】:

您也可以使用 jEasyORM (http://jeasyorm.sourceforge.net/)。 在大多数情况下,它会自动将对象映射到数据库表,而无需进行配置。

【讨论】:

【参考方案7】:

您可能需要考虑 www.sormula.org。最少的编程/注释和简单的学习曲线。它使用标准 SQL 和 JDBC,因此可以与任何关系数据库一起使用。

【讨论】:

【参考方案8】:

你可以试试 SnakeORM http://sourceforge.net/p/selibs/wiki/Home/ 它没有很多运行时依赖,使用 JPA 注解并遵循 DAO 模式。

披露:我是这个项目的作者

【讨论】:

【参考方案9】:

如果你想要一个 ORM,那么这意味着你想要将对象映射到表、列到字段等。在这种情况下,如果你想避免更大的 ORM 实现的麻烦,你可以只使用普通的旧 JDBC ,具有简单的 DataAccessor 模式。但这并没有直接翻译成 XML。

如果你只想将对象持久化到某个地方,并且只关心在 Java 中“理解”对象,那么序列化是一种简单有效的方法,正如前面提到的 Thomas

【讨论】:

【参考方案10】:

您也可以试试我的小型 ORM 库 Java2DB。我专门为那些只想快速轻松地访问其数据库的小型项目创建了它。查看GitHub。

【讨论】:

【参考方案11】:

Onyx Database 是一个功能非常丰富的 Java NoSQL 数据库替代品。它是具有多种持久模式(cachingembedded-databasesave-to-remotesave-to-remote 的纯 java -cluster。它有一个嵌入式 ORM,可能是我用过的最简单的持久性 API。

【讨论】:

以上是关于用于小型项目的简单 Java ORM的主要内容,如果未能解决你的问题,请参考以下文章

一个可用于生产项目 基于 .NET 6 自研ORM

LinqToSql初探

MongoDB - 可用于 MongoDB 的不同 ORM 工具的比较

通俗易懂的JDBC教程-JDBC与ORM发展与联系#私藏项目实操分享#

用于异步保存和更新操作的 ORM/库? [关闭]

.Net ORM 学习曲线最快?