1

考虑在新项目中用 CDI 替换 Spring,我遇到了一个问题挑战:

我们用 SQL 查询做了很多事情(JPA 不合理):调用存储过程、报告、具有复杂语法的特殊查询。

互联网上CDI数据库访问的小例子很多,小例子JPA就足够了。但是您如何在 JPA 中使用 SQL 呢?

我正在寻找类似 Spring-JDBC 的东西,它具有通过 JDBC 和容器管理事务(通过注释)运行 SQL 查询的简化接口,但我还没有找到任何东西。

如何在 CDI 中使用 SQL 查询?是否可以使用 CDI 核心或扩展?

4

2 回答 2

2

规范中没有关于这样做的任何内容。您必须创建自己的库,创建事务层(或使用 Java EE 7 中的 JTA 1.2 或 Apache Deltaspike)并以这种方式构建它。我确实提到了 DeltaSpike,它在(希望)即将发布的 0.5 版中将具有其中一些查询和其他数据库特定功能。

于 2013-07-24T17:31:30.413 回答
1

CDI 代表上下文/依赖注入(如果我没记错的话)。它本身与 SQL 无关。将 CDI 与 JPA 一起使用可以让您使用数据库,但即使在这种情况下,JPA 也会完成所有工作。CDI 与它关系不大。

如果您想使用本机查询并且 JPAnativeQuery还不够,您必须将 Spring-JDBC 依赖项添加到您的项目中,或者因为您要远离 Spring,另一个较小的库可以为您提供类似的东西到JdbcTemplate等。

总而言之,CDI 没有 Spring-JDBC 的等价物,就像 Spring 没有 Swing GUI 的等价物一样。

于 2013-07-24T07:23:51.427 回答