您好我在构建JSF Web Applicaiton时遇到了关于最佳实践与安全编程的问题。
我有employee.xhtml
页面有支持Bean - EmployeeBean
。我在辅助bean中声明的所有变量都是非静态,并且具有getter和setter方法。例如:
ArrayList <Employee> alEmployees = new ArrayList<Employee>();
int userId;
BackingBean的构造函数加载员工。我通过在委托中调用静态方法来实现这一点。
userId = //some value.
alEmployees = EmployeeDelegate.loadEmployees(userId);
Delegate方法在DAO类中调用静态方法。
当n个用户同时使用该应用程序时,静态方法是否会导致任何数据并发问题?我的意思是userId 56在同时使用应用程序时看到userId 75列表? 是否真的建议在Delegate和DAO层中使用静态方法?
如果我不清楚,请告诉我。
由于
答案 0 :(得分:1)
如果EmployeeDelegate
不保留任何对方法调用引起的更改敏感的类变量和/或对方法的行为方式有影响,那么这样做是安全的。< / p>
然而,这种方法存在另一个主要问题。委托应该是interface
,以便您可以轻松地将其替换为不同的实现。这种方法表明委托根本不是一个接口(因为它可能不可能有静态方法)。