0

我对在 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)?
还是将 a 传递int idfindObject方法并只返回 a更好BusinessObject

4

1 回答 1

2
  • 至于findObject():只需通过ID。您正在设计一个远程接口。无论如何,如果您的 DTO 有很多字段,这将浪费带宽。

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

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

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

于 2013-08-13T12:25:37.493 回答