考虑在新项目中用CDI替换Spring,我遇到了问题挑战:
我们使用SQL查询做了很多事情(JPA不合理):调用存储过程,报告,具有复杂语法的专用查询。
在互联网上有很多关于CDI数据库访问的简单例子,对于简单的例子,JPA就足够了。但是你如何在JPA中使用SQL?
我正在寻找类似Spring-JDBC的东西,带有简化的界面,用于通过JDBC运行SQL查询和容器管理事务(通过注释),但我还没有找到任何东西。
如何使用CDI中的SQL查询?是否可以使用CDI核心或扩展?
答案 0 :(得分:2)
规范中没有任何关于这样做的内容。您必须创建自己的库,创建事务层(或使用Java EE 7中的JTA 1.2或Apache Deltaspike)并以此方式构建它。我确实提到了DeltaSpike,在(希望)即将发布的版本0.5中将会有一些查询和其他数据库特定的功能。
答案 1 :(得分:1)
CDI代表上下文/依赖注入(如果我没有记错的话)。它本身与SQL无关。使用CDI和JPA可以使用数据库,但即使在这种情况下,JPA也可以完成所有工作。 CDI与它几乎无关。
如果您想使用本机查询而JPA的nativeQuery
是不够的,您必须将Spring-JDBC依赖项添加到项目中,或者因为您正在离开Spring,另一个较小的库,可以提供与JdbcTemplate
类似的东西。
总而言之,CDI没有Spring-JDBC的等价物,就像Spring没有等效的Swing GUI一样。