EJB最佳实践:数据考据呈目前什么地方最符合[Java编程]
本文“EJB最佳实践:数据考据呈目前什么地方最符合[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
固然数据考证是全部企业利用程序的必须组件,但人们对数据考证历程的理解普通很菲薄,并且不能很好地履行.在这篇 EJB 最佳实践专栏文章中,Brett McLaughlin 注释了对基于 EJB 技术的系统举行数据考证的一些幕后概念,并向您展示了若何避免不测的或不可理解的错误消息.
每当您处理利用程序的业务逻辑时,都需求履行考证.利用程序必须有办法确保传入的数据格局精确,并且必须可以履行特定于业务的考证(如针对库存复核采购订单).
我们将谈论数据考证逻辑应当呈目前 EJB 利用程序代码的 什么位置,而不是专注于考证历程(Java 技术专区的 别的地方对此举行了很好的谈论).在本系列先前的本领文章中,我们理解了很多构成基于 EJB 技术的利用程序的组件:底层会话 bean 及其业务接口;在实体 bean 及其客户机之间传送数据的值对象以及担当 Web 层和业务层之间的保护层的各种委派类.考证逻辑非常合适这些组件中的任何一个.实际上,您可以在多个组件中安排考证逻辑,在整个利用程序中分层次地安排它(固然这样做是不可取的).因此,我们在此处提出的问题是:在 EJB 利用程序的什么位置安排考证代码 最有利?
数据考证的范例
要肯定将考证代码安排在什么位置,第一步是理解您正在处理什么范例的考证.数据格局考证确保全部数据范例(整数、浮点数、字符串等)都是精确的.它还要确认变量都在答应值的范围之内以及实际的情势按预期的匹配.本质上,数据格局考证处理考证的任何方面,这些考证不需求利用特定业务法则.
特定于业务的考证基于一组业务法则(比方,确保所供应的 ISBN 号与您数据库中的实际书籍相匹配).它几近老是需求对 EJB 层以及利用程序中的别的业务逻辑组件具有拜候权.
数据格局考证
肯定了正在处理的考证范例之后,下一步是肯定安排代码的位置.在您的 EJB 利用程序中,数据格局考证逻辑可以以下举行安排:
将赋值(setter)办法安排在业务委派上.
将赋值(setter)办法安排在 bean 的远程接口上.
将赋值(setter)办法安排在 bean 的消息对象或值对象上.
关于本示例,我们将假定您正在处理一个包含业务委派的 EJB 利用程序.假如是这样,那么您应当采纳某些步骤,确保全部的利用程序客户机(处于 Web 层)都在利用委派举行 bean 拜候,而不是直接拜候 bean.假如确切是这样,那么您可以将全部数据考证代码都安全地安排在业务委派办法中,如清单 1 所示.
清单 1. 业务委派中的数据格局考证
package com.ibm.library;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import javax.ejb.CreateException;
import javax.naming.NamingException;
public class LibraryDelegate implements ILibrary {
private ILibrary library;
public LibraryDelegate() {
init();
}
public void init() {
// Look up and obtain our session bean
try {
LibraryHome libraryHome =
(LibraryHome)EJBHomeFactory.getInstance().lookup(
"java:comp/env/ejb/LibraryHome", LibraryHome.class);
library = libraryHome.create();
} catch (NamingException e) {
throw new RuntimeException(e);
} catch (CreateException e) {
throw new RuntimeException(e);
} catch (RemoteException e) {
throw new RuntimeException(e);
}
}
// No validation required for accessor (getter) methods
public boolean checkout(Book book) throws ApplicationException {
// No validation required here; the object type
// takes care of it
try {
return library.checkout(book);
} catch (RemoteException e) {
throw new ApplicationException(e);
}
}
public boolean checkout(List books) throws ApplicationException {
// Validate list
for (Iterator i = books.iterator(); i.hasNext(); ) {
Object obj = i.next();
if !(obj instanceof Book) {
throw new ApplicationException(
ApplicationException.VALIDATION_ERROR,
"Only Books are allowed in the input list");
}
}
try {
return library.checkout(books);
} catch (RemoteException e) {
throw new ApplicationException(e);
}
}
// And so on...
public void destroy() {
// In this case, do nothing
}
}
以上是“EJB最佳实践:数据考据呈目前什么地方最符合[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |