用于小型项目的简单 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 数据库替代品。它是具有多种持久模式(caching、embedded-database、save-to-remote 和 save-to-remote 的纯 java -cluster。它有一个嵌入式 ORM,可能是我用过的最简单的持久性 API。
【讨论】:
以上是关于用于小型项目的简单 Java ORM的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB - 可用于 MongoDB 的不同 ORM 工具的比较