Как насчет хранения идентификатора организации вместо целого Organization
объекта?Это правильный способ размещения людей в их организациях.
Если вам нужно сохранить действительный объект Organization
внутри экземпляра Person
, вы можете создать поле transient
и обновлять его лениво,когда вы получаете к нему доступ.Примерно так:
class Person {
@AffinityKeyMapped
private int orgId;
private transient Organization org;
// Other fields, constructors, getter, setters.
}
// ...
// Accessor method in DAO logic.
Organization getOrganization(Person person, IgniteCache<Integer, Organization> orgCache) {
Organization org = person.getOrganization();
if (org == null) {
org = orgCache.get(person.getOrganizationId());
person.setOrganization(org);
}
return org;
}
Таким образом, поле org не будет сериализовано, если Person
помещено в кэш Ignite.Только orgId
будет.И Organization
будет запрашиваться из кэша только один раз для объекта Person
.Последующие вызовы getOrganization()
будут использовать сохраненное значение.