Возможно ли в Hibernate такое: При получении Entity из БД выбирать не все поля а только некоторые, чтобы снизить нагрузку на базу? Например, при логине пользователя нам не нужно "тянуть" из БД все его атрибуты, нужны поля только login и password. При редактировании профиля пользователя, конечно же, выбираем все поля таблицы users.
Возникла идея - создать в коде две сущности - одна UserSmall(id,login,password) а вторая User с полным набором полей. Но догадается ли Hibernate что это ссылки на одну и ту же таблицу и будет ли синхронизировать сущности?
Да, можно замапить 2 сущности на одну таблицу, и Hibernate догадается, что эти 2 (или более) сущности указывают на ту же таблицу. Для этого используется аннотация @Table(name = "table_name").
Нет, они не будут синхронизированы в том смысле, что, если одновременно активны две сущности - User и UserSmall - изменения из User не попадут в UserSmall магическим образом (нужно будет селектнуть UserSmall после сохранения User, чтобы получить обновленные данные).
Если попытаться сохранить запись с неполным набором полей в базу, то, генерируя запрос, в остальные, незамапленные поля, Hibernate подставит null.
Поэтому одну из них, UserSmall, я рекомендовал бы пометить аннотацией @Immutable, чтобы предотвратить случайное сохранение в базу. Так как скорей всего она будет использоваться вами только для чтения.
Ещё может пригодиться аннотация @DynamicUpdate. Она позволяет селектать и сохранять в базу неполную запись (в примере ниже см. UserUpdatable, в к-м сохранятся изменения только в полях firstName, lastName).
@Entity
@Table(name = "user")
public class User {
// все поля
}
@Entity
@Table(name = "user")
@Immutable
public class UserSmall {
// id, login, password
}
@Entity
@Table(name = "user")
@DynamicUpdate
public class UserUpdatable {
// id, firstName, lastName
}
@DynamicUpdate@ImmutableКак развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники