DataSerializable Hazelcast не используется с кешем Hibernate L2, поскольку хранимые объекты в кластере Hazalcast не являются объектами вашей сущности. Hibernate использует свой собственный формат данных (скажем, сериализация) в L2, преобразует ваши сущности, их отношения и коллекции в свой собственный формат и передает свои собственные объекты (реализуя java.io.Serializable) в Hazelcast. Hazelcast сериализует те, которые используют стандартную сериализацию Java и распределяет по кластеру.
Если у ваших классов сложный и глубокий объектный граф (интенсивное использование составных объектов и 1xn или аналогичные отношения), эта проблема двойной сериализации вызывает длительные задержки.
Hazelcast не имеет ничего общего с отложенной загрузкой Hibernate. Hibernate уже хранит сущности, их отношения и сопоставления коллекций отдельно. Таким образом, все они могут быть загружены из Hazelcast по одному. Но в вашем случае использования, если большинство загружаемых отложенных отношений всегда загружаются, тогда это вызовет несколько удаленных вызовов Hazelcast вместо одного. Поэтому вы должны тщательно продумать, где использовать ленивую загрузку.
Другой прием - использовать / включить Hazelcast near-cache, если ваше приложение в основном только для чтения. (Между прочим, если это не так, то использование кеша L2 может вам не подойти.) Таким образом, вы сэкономите много удаленных вызовов, и часто необходимые данные будут кэшироваться локально. Ближний кэш поддерживает все свойства карты Hazelcast, такие как TTL, выселение, максимальный размер и т. Д.
Документация Hazelcast Near-Cache ...