0

我有一个非常简单的托管 bean LOB,用于读取现有 LOB(从 DB)以及LOB向 DB 写入新的 LOB。

@ManagedBean(name = "lob")
@RequestScoped
public class LOB implements Serializable {    
    private int id;
    private String title;
    private String content;    

    public void createNewLOB(){    
       // code for adding new lob goes here
    }

    /** getters and setters for various bean properties go here**/

}

现在,因为我使用同一个LOB bean 来读取从 DB 读取的现有LOB(s)和同一个 bean(但当然是不同的实例)来LOB向 DB 写入一个新的。当 bean 已被实例化以读取现有 LOB 时,如何告诉 bean 实例从 DB 检索数据?

我应该在每个属性的 getter 中检索特定于每个 bean 属性的数据吗?不是好选择,我想是因为我想一次从数据库中读取所有数据。

所以,我想要的是,bean 属性应该在一轮中填充来自 DB 的数据,远在 facelets 代码中使用的 EL 表达式调用 bean 属性的 getter 之前。

我可以以某种方式告诉该实例是为读取现有数据而不是为编写新数据而创建的 LOB吗?

4

1 回答 1

1

当 bean 已被实例化以读取现有 LOB 时,如何告诉 bean 实例从 DB 检索数据?

只需在(后)构造函数中完成工作。


我可以以某种方式告诉该实例是为了读取现有数据而不是为了写入新 LOB 而创建的吗?

检查是否id不是null


请注意,您通过这种方式将“托管 bean”、“实体”和“数据访问对象”这些概念混合到一个类中。这是紧耦合,不一定是好的设计。

于 2011-10-10T11:59:34.520 回答