如何设置Spring+Hibernate依赖注入的代码



我有一个来自C++/C#的Java新手。

我的项目目前是这样设置的:

org.blah.config
HibernateConfig.java
org.blah.customer
Customer.java
CustomerController.java
CustomerService.java

hibernate Config设置hibernate内容并公开LocalSessionFactoryBean bean。

CustomerController是REST的入口点,它实际上没有太多逻辑,它只是包装了CustomerService.java(或者我应该称之为CustomerRepository?(。

CustomerService.java(或CustomerRepository?(封装DB内容。这就是我的位置:

@Autowired
private SessionFactory sessionFactory;

在我的CustomerController中,如果我这样做:

private CustomerService customerService = new CustomerService();

它不注入sessionFactory。

从我发现的一些示例中,人们似乎在Hibernate Config中创建了一个CustomerServicebean,然后将其注入控制器的构造函数中。这是个好做法吗?然后我会把我的Hibernate Config重命名为更具体的东西吗,比如CustomerHibernate Config等等。

只是想了解如何/在哪里放置配置&创建服务/回购实例,以便将其注入控制器。

这是一个很难用几个字回答的问题。您要求的是一个在很大程度上取决于所选设计模式的整体架构,但考虑到您有控制器和服务,让我这样说吧。MVS只是一种简化,并不是一种完美的方法。这将引发更多类似的问题。

  • 控制器应该包含多少逻辑
  • 一个模型应该包含任何逻辑吗
  • 视图是否应该包含逻辑

像这样的问题很难回答,因为这些都是非常主观的。尽管如此,我已经使用Spring一段时间了,我会给你我的建议。

控制器的功能是验证输入,并在需要时重定向到视图,或者响应客户端的请求。如果你有域逻辑(也称为业务逻辑、业务规则和域知识(,即做出业务关键决策的逻辑,那么它不应该在控制器上,而应该在服务上。

现在,我想说的是,您的体系结构中缺少了一层,我肯定会添加一个DAO,这是一种设计模式,定义了一种解耦应用程序持久层的方法。这就是您所理解的存储库。

话虽如此,您只需要一个Hibernate配置,并在与该模型相关的每个模型或XML文件中进行相应的映射。我建议使用annotations而不是XML文件。

如果你想学习如何实现一个使用Hibernate的Spring项目,你可以按照Baeldung的教程来了解它有多容易。该页面确实有关于Spring使用的最佳指南。

最新更新