java - 减少 Hibernate 存储库中的样板代码/在桌面客户端-服务器应用程序中使用 Spring 的 JpaRepository 接口(interface)

标签 java spring hibernate spring-data-jpa desktop-application

我目前正在开发一个使用 Hibernate 访问数据库的桌面 Java 客户端-服务器应用程序。许多对数据库的调用都是通用的 CRUD 操作,因此我希望有一种方法可以减少样板代码的数量。

我偶然发现了 Spring 框架中的 JpaRepository/CrudRepository 接口(interface),并且希望能够使用它们中的任何一个,但感觉好像我一直在与 Spring 的 Web 应用程序焦点作斗争。例如,由于存储库是由 Spring Autowiring 的,我无法实例化副本或创建静态实例,因此很难从服务器类调用存储库的任何方法。

因此我有四个问题:

  1. 有没有办法使用 Spring Jpa/CrudRepository 接口(interface) 没有 Autowiring 它们?
  2. 有没有办法在不使用 Spring 的情况下使用任一接口(interface)?
  3. 桌面应用程序是否有可以实现相同目的的替代界面?
  4. 我缺少更好的选择吗?

最佳答案

chrylis 在评论中给了您真正需要的答案:

Make your "program" a Spring component

我想说,适当的方法是将其设为 CommandLineRunner

我什至会更进一步说:即使您在单个进程中启动,您也应该维护一个类似 Web 的架构,甚至可能在应用程序中维护一个 Web 服务器,以便

a) 以合理的方式使用 JPA,即明确定义由服务器进程在单独线程中处理的请求

b) 在处理查询时不要阻塞 UI。

回答您的字面问题:

Is there a way to use the Spring Jpa/CrudRepository interfaces without autowiring them in?

是的,您可以使用 JpaRepositoryFactory 手动创建存储库

Is there a way to use either interface without using Spring?

接口(interface)本身只是接口(interface),不需要 Spring 的任何其他东西就可以使用。 当然,这样做的好处是有限的。

Is there an alternative interface for desktop applications which would achieve the same purpose?

不,没有必要。

Is there a better alternative that I'm missing.

我不这么认为,但我有偏见。

关于java - 减少 Hibernate 存储库中的样板代码/在桌面客户端-服务器应用程序中使用 Spring 的 JpaRepository 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187752/

相关文章:

java - 使用 Jersey 客户端的 HTTPS

java - 无法匹配 Java 中的正则表达式

java - 选择什么技术? Spring Batch 还是 Hadoop?

java - 禁用特定方法的 Hibernate 验证

java - Spring找不到我的html页面

java - 如何使用 spring 和 hibernate 从 mysql 获取图像列表

java - Hibernate 查询在字符串字段中搜索特定子字符串

java - 线程银行转账模拟和同步

java - 另一种方法的图形G

sql-server-2005 - Hibernate 如何映射 SQL 数据类型 nvarchar(max)?