blob: 39152f5a696a165b031f805250640b007a43f27b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.cache.hibernate;
import org.apache.ignite.Ignite;
import org.hibernate.cache.CacheException;
import org.hibernate.cache.internal.DefaultCacheKeysFactory;
import org.hibernate.cache.spi.DomainDataRegion;
import org.hibernate.cache.spi.RegionFactory;
import org.hibernate.cache.spi.access.AccessType;
import org.hibernate.cache.spi.access.NaturalIdDataAccess;
import org.hibernate.cache.spi.access.SoftLock;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.persister.entity.EntityPersister;
/**
* Implementation of contract for managing transactional and concurrent access to cached naturalId data.
*/
public class IgniteNaturalIdDataAccess extends IgniteCachedDomainDataAccess implements NaturalIdDataAccess {
/** Strategy access type. */
private final AccessType accessType;
/**
* @param stgy Access strategy adapter.
* @param accessType Access type.
* @param regionFactory Region factory.
* @param domainDataRegion Domain data region.
* @param ignite Ignite instance.
* @param cache Cache proxy.
*/
public IgniteNaturalIdDataAccess(
HibernateAccessStrategyAdapter stgy,
AccessType accessType,
RegionFactory regionFactory,
DomainDataRegion domainDataRegion,
Ignite ignite,
HibernateCacheProxy cache
) {
super(stgy, regionFactory, domainDataRegion, ignite, cache);
this.accessType = accessType;
}
/** {@inheritDoc} */
@Override public AccessType getAccessType() {
return accessType;
}
/** {@inheritDoc} */
@Override public Object generateCacheKey(Object[] naturalIdValues, EntityPersister persister, SharedSessionContractImplementor ses) {
return DefaultCacheKeysFactory.staticCreateNaturalIdKey(naturalIdValues, persister, ses);
}
/** {@inheritDoc} */
@Override public Object[] getNaturalIdValues(Object cacheKey) {
return DefaultCacheKeysFactory.staticGetNaturalIdValues(cacheKey);
}
/** {@inheritDoc} */
@Override public boolean insert(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
return stgy.insert(key, val);
}
/** {@inheritDoc} */
@Override public boolean afterInsert(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
return stgy.afterInsert(key, val);
}
/** {@inheritDoc} */
@Override public boolean update(SharedSessionContractImplementor ses, Object key, Object val) throws CacheException {
return stgy.update(key, val);
}
/** {@inheritDoc} */
@Override public boolean afterUpdate(
SharedSessionContractImplementor ses,
Object key,
Object val,
SoftLock lock
) throws CacheException {
return stgy.afterUpdate(key, val);
}
}