0

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

在上述方法中,这将更加昂贵。

感谢 Ankit

4

1 回答 1

1

在上述两种数据库交互方法之间进行选择没有硬性规定。开发人员必须做出合乎逻辑的选择

AccessBeans

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

会话 Bean

与 access 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 之外进行数据库事务时使用。请记住,强烈建议使用 EJB 进行更新/删除以保持整体完整性。

在您的情况下,据我了解,这是一个涉及多个表的选择,并且您不希望数据真正同步(就像您可以丢失已更新纳秒左右的数据一样)。因此,您可以继续使用第二种或第三种方法

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

于 2017-08-22T08:28:51.203 回答