哪个与spring一起工作的java orm是最轻量级的?

Posted

技术标签:

【中文标题】哪个与spring一起工作的java orm是最轻量级的?【英文标题】:Which java orm that works with spring is the most light weight? 【发布时间】:2011-11-25 04:43:43 【问题描述】:

我正在构建一个非常简单的 Spring 应用程序。

当涉及到 ORM 时,我不需要任何关系或功能丰富的更改跟踪/会话管理或任何其他花哨的功能。

我只是想要一些映射到我的数据库表的东西,在那里我可以在单个实体上执行基本的 CRUD,例如更新/插入/删除/选择。

我目前正在使用休眠,只是想知道还有什么可以扩展我的知识并简化事情。

【问题讨论】:

看ibatismybatis.org/java.html 【参考方案1】:

ORM 工具本身并不复杂。事实上,您可能已经注意到,如果使用得当,它们会使开发人员的生活更轻松。您没有提到您在使用 hibernate 时面临哪些问题,这促使您寻找更简单的替代方案。几乎所有ORM tools 都有或多或少相似的功能/API,因为它们从根本上解决了相同的问题。 (Spring支持Hibernate、JDO、iBatis、JPA)

这里是这个论坛上关于休眠使用的非常interesting post。根据经验,如果您的架构具有较少的表(如帖子中提到的 5 - 10 个)并且关系不是很复杂,那么您应该避免使用 ORM 工具,因为这可能是矫枉过正。在这种情况下,JDBC 就足够了。我会强烈推荐spring JDBC(因为您已经在使用spring)。

【讨论】:

【参考方案2】:

我不确定我的ORMLite 包是否是“最”轻量级的,但我想我至少会提到它作为一种可能性。它有几个 spring 实用程序类来帮助配置,并且被设计为简单、容易和轻量级。以下是春季文档:

http://ormlite.com/docs/spring

这里是手册的getting started section。还有一个spring wiring example可以看看:

以下是文档中的一些示例 spring 配置:

<!-- URL used for database, probably should be in properties file -->
<bean id="databaseUrl" class="java.lang.String">
    <!-- we are using the in-memory H2 database in this example -->
    <constructor-arg index="0" value="jdbc:h2:mem:account" />
</bean>

<!-- datasource used by ORMLite to connect to the database -->
<bean id="connectionSource" class="com.j256.ormlite.jdbc.JdbcConnectionSource"
    init-method="initialize">
    <property name="url" ref="databaseUrl" />
    <!-- probably should use system properties for these too -->
    <property name="username" value="foo" />
    <property name="password" value="bar" />
</bean>

<!-- abstract dao that is common to all defined daos -->
<bean id="baseDao" abstract="true" init-method="initialize">
    <property name="connectionSource" ref="connectionSource" />
</bean>

<!-- our daos -->
<bean id="accountDao" class="com.j256.ormlite.examples.common.AccountDaoImpl"
    parent="baseDao" />
<bean id="deliveryDao" class="com.j256.ormlite.spring.DaoFactory"
  factory-method="createDao">
    <constructor-arg index="0" ref="connectionSource" />
    <constructor-arg index="1" value="com.j256.ormlite.examples.spring.Delivery" />
</bean>

【讨论】:

【参考方案3】:

我将 MyBatis v3.0.4 与 Spring v3.0 一起使用,效果非常好。我们有很高的性能要求,它能够满足这些要求——嗯,它并没有妨碍我们。如有必要,它也足够灵活,可以处理复杂的事情。只需很少的设置。

【讨论】:

调用 MyBatis "ORM" 确实是在拉伸它。 @skaffman 是的,但考虑到问题的明显动机,这似乎是相关的。 :o)

以上是关于哪个与spring一起工作的java orm是最轻量级的?的主要内容,如果未能解决你的问题,请参考以下文章

spring-学习

哪个 ORM 支持多行更新和删除

什么是 spring data jpa 以及它使用哪个 orm 框架?

一般来说,哪个 Java ORM 被认为是性能最高的? [关闭]

C# 数据处理设计模式:通过 ORM 存储在 DB 中的对象,直接与数据库一起工作?

volatile -- 最轻量级的同步机制