|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?
4.Interceptor介面:
您能够在开启Session时载进一个自订Interceptor,这个Interceptor会在对应的举措产生之前呼唤对应的办法,办法是让您界说的Interceptor实作Interceptor介面,介面的界说以下:
Interceptor.java
packageorg.hibernate;
importjava.io.Serializable;
importjava.util.Iterator;
importorg.hibernate.type.Type;
publicinterfaceInterceptor{
//载进物件之前实行
public
booleanonLoad(Objectentity,Serializableid,Object[]state,String[]propertyNames,Type[]types)
throwsCallbackException;
//flush时,假如发明有Dirtydata,则实行此办法
public
booleanonFlushDirty(Objectentity,Serializableid,Object[]currentState,Object[]previousState,
String[]propertyNames,Type[]types)throwsCallbackException;
//贮存物件前实行
public
booleanonSave(Objectentity,Serializableid,Object[]state,String[]propertyNames,Type[]types)
throwsCallbackException;
//删除物件前实行
public
voidonDelete(Objectentity,Serializableid,Object[]state,String[]propertyNames,Type[]types)
throwsCallbackException;
//在flush前实行
publicvoidpreFlush(Iteratorentities)throwsCallbackException;
//在flush後实行
publicvoidpostFlush(Iteratorentities)throwsCallbackException;
//判别传进的物件是不是为transient形态
publicBooleanisTransient(Objectentity);
//flush前呼唤这个办法判别Dirtydata
//传回Dirtydata属性索引或null采预设举动
public
int[]findDirty(Objectentity,Serializableid,Object[]currentState,Object[]previousState,
String[]propertyNames,Type[]types);
//手动创建实体物件,假如传回null,则利用预设的建构办法创建实例
publicObjectinstantiate(StringentityName,EntityModeentityMode,Serializableid)
throwsCallbackException;
//传回实体称号
publicStringgetEntityName(Objectobject)throwsCallbackException;
//获得实体物件
publicObjectgetEntity(StringentityName,Serializableid)throwsCallbackException;
//beginTransaction()之後实行
publicvoidafterTransactionBegin(Transactiontx);
//在事件完成前实行
publicvoidbeforeTransactionCompletion(Transactiontx);
//在事件完成後实行
publicvoidafterTransactionCompletion(Transactiontx);
}
<p>
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。 |
|