I am not sure if this not really is a bug. StandardCacheEntryImpl calls TypeHelper.disassemble which causes the freshly converted (converttoEntityAttribute) attribute again to be converted the other way round (convertToDatabaseColumn) to use this value to fill the cache (??) . If this conversion is slow this is a problem. This is processed within one query.list() call. It would be nice if there was a way to suppress this forward and backward conversion that slows processing down a lot. It would be really helpful if I could instead cache the Entityattribute and not the Databaseattribute as then I would get rid of all the conversions when working from cache. Or do I get the reason for this forward backward conversion wrong? It ends up to be in AttributeConverterMutabilityPlan.deepCopyNotNull(). There I can see the convertToDatabaseColumn() method to be called immediately followed by a call to converttoEntityAttribute(). If I somehow could switch this off my application would be several orders of magnitude faster. What is this for? : public class AttributeConverterMutabilityPlanImpl<T> extends MutableMutabilityPlan<T> { private final AttributeConverter attributeConverter;
public AttributeConverterMutabilityPlanImpl(AttributeConverter attributeConverter) { this.attributeConverter = attributeConverter; }
@Override @SuppressWarnings("unchecked") protected T deepCopyNotNull(T value) { return (T) attributeConverter.convertToEntityAttribute( attributeConverter.convertToDatabaseColumn( value ) ); } } |
|