Java 在不同层之间传递bean

Java 在不同层之间传递bean,java,Java,我需要一些关于如何在不同层之间移动数据的想法。通常我计划如下,每一层都有自己的POJO formPojo controllerPojo servicePojo ===============> ================> =============> Form/UI Control

我需要一些关于如何在不同层之间移动数据的想法。通常我计划如下,每一层都有自己的POJO

         formPojo                     controllerPojo             servicePojo        
        ===============>             ================>          =============> 
Form/UI                  Controller                     Service                 Dao
        <===============             <===============           <============
         controllerPojo               servicePojo                   dbPojo
formPojo控制器POJO服务POJO
===============>             ================>          =============> 
表单/UI控制器服务Dao

这取决于您使用什么作为框架。例如,在SpringMVC中,您可以使用备份对象和模型对象进行数据绑定和传输。通常,这些对象不是彼此的镜像

我建议大家仔细阅读这些概念。有关特定于spring的实现,请参见此处的spring MVC文档:

我想详细说明一下。在您作为应用程序开发人员的整个职业生涯中,您都会遇到这些概念。在为不同的层创建不同的对象方面,我们经常面临着决定分离层的最佳方式,从而分离数据。正确处理这一点很重要,谢天谢地,有一些工具可以提供帮助

但是,首先我们需要了解提供的机制,以便利用框架和容器提供的内置效率。因此,了解允许自动检测属性和方法的JavaBean约定

还有地图绘制者。例如,如果我想要获取一个数据对象,并将它的一些内容放入一个页面对象中。我可以使用Dozer或ModelMapper之类的工具来帮助管理两个这样的对象之间的数据传输。这可以是简单的,也可以是复杂的,这取决于您的需要


当然,手工操作是了解这些工具背后的想法的最简单的方法,但是你应该知道这些工具的存在,因为它们可能会影响你的方法

POJO意味着普通的旧Java对象,您的意思是DTO,就像数据传输对象一样。我认为在不同的层之间共享一个DTO并不令人震惊。试着简单地思考。构建一个复杂的“为改变而设计”的体系结构并不总是最好的解决方案,我通常更喜欢“YAGNI”()的编码方式。需要注意的是,我没有讨论域对象、模型对象和数据传输对象的差异或定义。这是因为它们都可以根据其适用性进行不同的使用;答案并不总是一个,而且常常有重叠。然后,我想到了其他概念,如不变性、同一性等。