下面列出了org.hibernate.CacheMode#IGNORE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private static CacheMode getCacheMode(CacheModeType cacheModeType) {
switch ( cacheModeType ) {
case GET:
return CacheMode.GET;
case IGNORE:
return CacheMode.IGNORE;
case NORMAL:
return CacheMode.NORMAL;
case PUT:
return CacheMode.PUT;
case REFRESH:
return CacheMode.REFRESH;
default:
throw new AssertionFailure( "Unknown cacheModeType: " + cacheModeType );
}
}
/**
* Given a JPA {@link CacheStoreMode} and {@link CacheRetrieveMode}, determine the corresponding
* legacy Hibernate {@link CacheMode}.
*
* @param storeMode The JPA shared-cache store mode.
* @param retrieveMode The JPA shared-cache retrieve mode.
*
* @return Corresponding {@link CacheMode}.
*/
public static CacheMode interpretCacheMode(CacheStoreMode storeMode, CacheRetrieveMode retrieveMode) {
if ( storeMode == null ) {
storeMode = DEFAULT_STORE_MODE;
}
if ( retrieveMode == null ) {
retrieveMode = DEFAULT_RETRIEVE_MODE;
}
final boolean get = ( CacheRetrieveMode.USE == retrieveMode );
switch ( storeMode ) {
case USE: {
return get ? CacheMode.NORMAL : CacheMode.PUT;
}
case REFRESH: {
// really (get == true) here is a bit of an invalid combo...
return CacheMode.REFRESH;
}
case BYPASS: {
return get ? CacheMode.GET : CacheMode.IGNORE;
}
default: {
throw new IllegalStateException( "huh? :)" );
}
}
}
/**
* Given a JPA {@link CacheStoreMode} and {@link CacheRetrieveMode}, determine the corresponding
* legacy Hibernate {@link CacheMode}.
*
* @param storeMode The JPA shared-cache store mode.
* @param retrieveMode The JPA shared-cache retrieve mode.
*
* @return Corresponding {@link CacheMode}.
*/
public static CacheMode effectiveCacheMode(CacheStoreMode storeMode, CacheRetrieveMode retrieveMode) {
if ( storeMode == null && retrieveMode == null ) {
return null;
}
if ( storeMode == null ) {
storeMode = DEFAULT_STORE_MODE;
}
if ( retrieveMode == null ) {
retrieveMode = DEFAULT_RETRIEVE_MODE;
}
final boolean get = ( CacheRetrieveMode.USE == retrieveMode );
switch ( storeMode ) {
case USE: {
return get ? CacheMode.NORMAL : CacheMode.PUT;
}
case REFRESH: {
// really (get == true) here is a bit of an invalid combo...
return CacheMode.REFRESH;
}
case BYPASS: {
return get ? CacheMode.GET : CacheMode.IGNORE;
}
default: {
throw new IllegalStateException( "huh? :)" );
}
}
}
public static CacheMode getCacheMode(String cacheMode) {
if (cacheMode == null) return null;
if ( "get".equals( cacheMode ) ) return CacheMode.GET;
if ( "ignore".equals( cacheMode ) ) return CacheMode.IGNORE;
if ( "normal".equals( cacheMode ) ) return CacheMode.NORMAL;
if ( "put".equals( cacheMode ) ) return CacheMode.PUT;
if ( "refresh".equals( cacheMode ) ) return CacheMode.REFRESH;
throw new MappingException("Unknown Cache Mode: " + cacheMode);
}
@Override
public CacheMode getCacheMode() {
return CacheMode.IGNORE;
}
public CacheMode getCacheMode() {
return CacheMode.IGNORE;
}
@Override
public CacheMode getCacheMode() {
return CacheMode.IGNORE;
}
@Override
public CacheMode getCacheMode() {
return CacheMode.IGNORE;
}
@Override
public <E> E execute(OnlineSectioningAction<E> action, OnlineSectioningLog.Entity user) throws SectioningException {
Long oldSessionId = ApplicationProperties.getSessionId();
ApplicationProperties.setSessionId(getAcademicSession().getUniqueId());
long c0 = OnlineSectioningHelper.getCpuTime();
String cacheMode = getConfig().getProperty(action.name() + ".CacheMode", getConfig().getProperty("CacheMode"));
OnlineSectioningHelper h = new OnlineSectioningHelper(user, cacheMode != null ? CacheMode.valueOf(cacheMode) : action instanceof HasCacheMode ? ((HasCacheMode)action).getCacheMode() : CacheMode.IGNORE);
try {
setCurrentHelper(h);
h.addMessageHandler(new OnlineSectioningHelper.DefaultMessageLogger(LogFactory.getLog(action.getClass().getName() + "." + action.name() + "[" + getAcademicSession().toCompactString() + "]")));
h.addAction(action, getAcademicSession());
E ret = action.execute(this, h);
if (h.getAction() != null && !h.getAction().hasResult()) {
if (ret == null)
h.getAction().setResult(OnlineSectioningLog.Action.ResultType.NULL);
else if (ret instanceof Boolean)
h.getAction().setResult((Boolean)ret ? OnlineSectioningLog.Action.ResultType.TRUE : OnlineSectioningLog.Action.ResultType.FALSE);
else
h.getAction().setResult(OnlineSectioningLog.Action.ResultType.SUCCESS);
}
return ret;
} catch (Exception e) {
if (e instanceof SectioningException) {
if (e.getCause() == null) {
h.info("Execution failed: " + e.getMessage());
} else {
h.warn("Execution failed: " + e.getMessage(), e.getCause());
}
} else {
h.error("Execution failed: " + e.getMessage(), e);
}
if (h.getAction() != null) {
h.getAction().setResult(OnlineSectioningLog.Action.ResultType.FAILURE);
if (e.getCause() != null && e instanceof SectioningException)
h.getAction().addMessage(OnlineSectioningLog.Message.newBuilder()
.setLevel(OnlineSectioningLog.Message.Level.FATAL)
.setText(e.getCause().getClass().getName() + ": " + e.getCause().getMessage()));
else
h.getAction().addMessage(OnlineSectioningLog.Message.newBuilder()
.setLevel(OnlineSectioningLog.Message.Level.FATAL)
.setText(e.getMessage() == null ? "null" : e.getMessage()));
}
if (e instanceof SectioningException)
throw (SectioningException)e;
throw new SectioningException(MSG.exceptionUnknown(e.getMessage()), e);
} finally {
if (h.getAction() != null) {
h.getAction().setEndTime(System.currentTimeMillis()).setCpuTime(OnlineSectioningHelper.getCpuTime() - c0);
if ((!h.getAction().hasStudent() || !h.getAction().getStudent().hasExternalId()) &&
user != null && user.hasExternalId() &&
user.hasType() && user.getType() == OnlineSectioningLog.Entity.EntityType.STUDENT) {
if (h.getAction().hasStudent()) {
h.getAction().getStudentBuilder().setExternalId(user.getExternalId());
} else {
h.getAction().setStudent(OnlineSectioningLog.Entity.newBuilder().setExternalId(user.getExternalId()));
}
}
}
if (iLog.isDebugEnabled())
iLog.debug("Executed: " + h.getLog() + " (" + h.getLog().toByteArray().length + " bytes)");
OnlineSectioningLogger.getInstance().record(h.getLog());
releaseCurrentHelper();
ApplicationProperties.setSessionId(oldSessionId);
}
}