参数通过远程会话bean传递到DTO / DAO服务后端

时间:2013-08-13 11:42:22

标签: java-ee parameter-passing dao dto stateless-session-bean

我在JavaEE上开发相对较新。我想知道在将参数传递到会话bean中以进行对象创建或删除调用时,最佳格式是什么。

对于我的后端,我使用带有DAO的DTO在数据库上运行创建,更新,删除和读取操作

public class BusinessObject {
    public String name;
    public int id;

    // Assume constructor to init these 2 fields.
}

我有一个简单的DAO界面:

public interface BusinessDAO {
    public void createBusinessObject(BusinessObject bo);
    public void deleteBusinessObject(BusinessObject bo);
    public void updateBusinessObject(BusinessObject bo);
    public void findBusinessObject(BusinessObject bo);
}

(我认为现阶段BusinessDAO的实施无关紧要)

关于我的实际问题 - 如果我有一个远程(无状态会话bean)EJB接口,我应该在远程EJB接口中定义一个方法:

public void addBusinessObject(String name, int id);

或者类似的东西:

public void addBusinessObject(BusinessObject bo);

我有一个简单的客户端程序,可以调用这些方法中的任何一个。

我的想法是,对于对象创建,BusinessObject bo定义会更好用,但我似乎认为我可以遵循远程接口中其他定义的模式。
我不知道如何为findObject(BusinessObject bo)

这样的方法定义相同类型的方法定义

标准做法是创建BusinessObject并且只提供该对象中的ID字段,然后DAO实现将填充的对象返回给客户端(通过会话bean)吗? 或者,最好是将int id传递到findObject方法,而只返回BusinessObject

1 个答案:

答案 0 :(得分:2)

  • 至于findObject():只需传递ID即可。您正在设计远程接口。无论如何,如果你的DTO有很多字段,这会浪费带宽。

  • 至于addBusinessObject():通过DTO。如果您的DTO中有大量字段,这会“更好地扩展”:如果您添加/删除字段,它将在以后简化维护。

另一方面,如果您有类似changeOneFieldOnly()的内容,则可以传递ID和新值(而不是完整的DTO)。特别是在远程接口的情况下,根据用例定制方法(根据经验:对于每个用户操作,只需调用远程服务层)。

所以从用例角度看远程接口(而不是创建/添加/删除)。