使用AccessBean或SQL从IBM WCS中的OOTB表获取数据是一种好习惯

时间:2017-08-21 19:44:07

标签: wcs

我想从多个OOTB WCS表中获取没有OOTB剩余可用的数据。我在databean中使用多个访问bean来从表中获取数据。这是一个很好的做法,或者我们应该使用ServerJDBCHelperAccessBean使用join来命中数据库。我知道AccessBean是缓存的,但也有一些技术我们也可以缓存sql。 在从多个表中获取数据的情况下,是否还有其他原因我们应该使用AccessBean而不是ServerJDBCHelperAccessBean。或者我们应该使用ServerJDBCHelperAccessBean并使用连接在单个sql查询中获取数据。

在上述方法中哪些会更贵。

由于 ANKIT

1 个答案:

答案 0 :(得分:1)

在上述两种数据库交互方法之间没有硬性规定可供选择。开发者必须做出合理的选择

AccessBeans

缓存是访问bean的优势之一。这是一个很好的性能改进,通过缓存主对象来实现,因为查找主对象的成本很高。另一个支持访问bean的点是处理乐观更新。您的情况是获取数据(不更新/插入),因此您在这里安全。

会话Bean

与访问bean一样,当您想从多个表中获取数据时,会话bean是另一种从DB读取数据的方法。会话bean必须实现BASEJDBCHelper类。

public class  TestSessionBean extends 
com.ibm.commerce.base.helpers.BaseJDBCHelper 
implements SessionBean{
public Object  fetchResults()       throws 
javax.naming.NamingException, SQLException
{
try {
// get a connection from the WebSphere Commerce data source
makeConnection();
PreparedStatement prepStatement = getPreparedStatement( "sql to execute");
ResultSet rs = executeQuery(prepStatement, false);
}
finally {
closeConnection();
}
}
}

使用ServerJDBCHelperAccessBean

当您必须在EJB之外创建db事务时,将使用此方法。请记住,强烈建议使用EJB进行更新/删除以保持整体完整性。

在你的情况下,据我所知,它是一个涉及多个表的选择,你并不热衷于数据真正同步(就像你可以丢失一个数据,这个数据已经更新纳秒级左右) 。因此,您可以采用第二种或第三种方法

一个很好的参考: http://deepakpadmakumar.blogspot.com.au/2012/05/session-beans-and-entity-beans-in-wcs.html