轻量级Java事务管理

4

我目前正在为一款主要面向智能手机的回合制持久世界游戏开发游戏服务器,现在我正在开始实现持久层,并寻求一些提示/建议。

最初我计划使用mybatis作为持久层,而mybatis-guice插件实现了一个简单的@Transactional注释,类似于Spring,但没有那个框架的重量。不幸的是,由于我发现ORM会带来很多麻烦,并且我的关系设计并不特别规范化,所以我放弃了mybatis。现在我基本上使用JDBC,并且真的很想避免编写大量管理事务和连接的样板代码,在DAO调用字符串中。

我还避免在这里使用任何应用程序服务器或添加使用spring,因为它们似乎不适合,该服务器在netty之上直接运行java。在这些条件下,是否有简单的事务管理器,或者我必须自己制定?像mybatis-guice的@Transactional这样的东西就很好。

2个回答

1

如果你正在寻找一种更好的方式在不选择全面的 ORM 的情况下进行数据库工作,那么可以看看 JDBI。它是一个非常轻量的 JDBC 包装器,解决了许多问题和疏漏,并减少了很多让人抓狂的时刻。


2
这不是一个事务管理器,但我希望解决你的“我的代码无法很好地适应ORM”的问题。我在使用JDBI时也没有发现需要使用事务管理器。 - Steven Schlansker

0

在我看来,Spring和Hibernate的组合是最好的,根据您的需求,它们都非常轻量级。

目前我们正在使用OpenJPA,对此也感到非常满意。

需要多轻量级呢?选择Spring和Hibernate吧,它们很轻量级。Guice是一个简单且轻量级的DI框架,我相信您已经知道了,但是通过添加诸如事务管理等内容,您最终将得到太多的低端开源产品*(我并不是说Guice是低端产品)*,您会发现它们并没有比其他开源替代品更轻量级,并且由于使用人数较少,社区支持也会更少。


Spring似乎主要用于基于Web的应用程序,对吧?我正在使用Netty上的自定义TCP协议为我的客户端提供服务,服务器旨在用于在线游戏。这与Spring集成得如何? - cris.h
虽然我不知道它不是一个Web应用程序,但Spring在Web应用程序之外也能很好地工作,并且并不意味着它只适用于Web架构。试试看,我相信你会喜欢它的。有更好的选择吗?可能没有,但可能与Spring一样好。我曾经在使用套接字为客户端编写的聊天客户端中使用过Spring。我想底线是你必须自己评估,但简单的答案是肯定的,它将完全正常。 - Shahzeb
春季在大多数情况下都很好,不过我必须警告你。@Transactional只能在直接从Spring上下文创建的bean上起作用。此外,即使在注释的bean内部进行本地调用,它也无法工作。不过有一个选项:您可以使用TransactionTemplate。 - SirVaulterScoff
我不确定你是否已经在使用Spring。但是如果没有,请也看一下JdbcTemplate。它可能适合您的应用程序。 - SirVaulterScoff
1
我最终使用了Spring及其JDBC抽象,非常适合我的当前需求。 - cris.h

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接