关于EJB的持久化对象技术分析 - 编程入门网
nfo userInfo = null;
try
{
LocalUserHome home = getUserHome();
LocalUser localUser = null;
try
{
System.out.println("Finding user...");
localUser = home.findByPrimaryKey(userID);
}
catch (FinderException e)
{
}
if (localUser == null)
{
System.out.println("Creating user...");
localUser = home.create(userID,"John " + userID + " Doe","123 anywhere st.","Seattle","WA","87654");
}
System.out.println("EJB returned User ID: " + localUser.getUserID());
userInfo = convertToUserInfo(localUser);
System.out.println("User FullName: " + localUser.getFullName());
}
catch (Exception e)
{
System.err.println(e.toString());
}
return userInfo;
}
private static UserInfo convertToUserInfo(LocalUser localUser)
{
UserInfo userInfo;
userInfo = new UserInfo();
userInfo.setId(localUser.getUserID());
userInfo.setFullName(localUser.getFullName());
userInfo.setAddress(localUser.getAddress());
userInfo.setCity(localUser.getCity());
userInfo.setState(localUser.getState());
userInfo.setZip(localUser.getZip());
return userInfo;
}
}
请注意在列表4中,UserService对象首先试着通过findByPrimaryKey()方法来找到一个EJB的实例,并在这个方法中传递一个用户ID的参数。如果没有找到实体EJB的实例,UserService对象将调用EJB的home接口中的create()方法来创建一个新的EJB实例。 findByPrimaryKey()方法在调用过程中首先被EJB容器拦截,EJB容器试着从数据库中找出一个与用户ID相同主键的记录。create()方法将在数据库中插入一个主键等于用户ID的记录。 关于EJB的持久化对象技术分析(7)时间:2010-12-04EJB查询语言(EJB QL) EJB规范提供了一种名为EJB QL的对象查询语言,用来查询CMP。这种对象查询语言实际上被容器转化为SQL语言。 EJB QL语言用来实现EJB的home接口中的find()查询方法,并执行实体EJB定义的一些内部的select方法。这些EJB QL一般放在应用程序的部署描述文件中。 以下XML代码(选自于jaws.xml文件)定义了在UserEJB的home接口中findByState()方法与相应EJB QL之间的映射。这个示例程序用这个EJB QL查询语言及相应的find()方法寻找给出状态的某个用户。
在以上的定义当中,ejb-ql标签定义了实际使用的EJB QL。当你只想查找一个特定类型的对象时,必须要在查询语言中加入object关键字。另外这个查询中的"?1"的作用类似于JDBC中的PrepareStatement,表明这个查询是一个参数化查询。如果有多个参数,则依次为"?2"、"?3"以此类推,这些参数与查询方法findByState()中的参数表从"?1"开始一一对应。 在上例中,"?1"将被findByState()方法的第一个名为state的参数所取代。除此之外 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |