Просто упомянуть: SimpleDateFormat
- это старый способ форматирования дат, который, кстати, не является поточно-ориентированным. Начиная с Java 8 появились новые пакеты с именами java.time
и java.time.format
, и вы должны использовать их для работы с датами. Для ваших целей вы должны использовать класс ZonedDateTime Сделайте что-то вроде этого:
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("..."));
, чтобы узнать правильный идентификатор зоны для Японии, используйте
ZoneId.getAvailableZoneIds()
Позже для форматирования Ваш Date правильно использует класс DateTimeFormatter
Чтение объектов от базы данных и сохранение их полагаются на две различных аннотации.
При загрузке объекта это также получит другой конец любого нетерпеливого (FetchType.EAGER
) отношения, как определено свойством выборки на отношениях.
В зависимости от Вашего поставщика JPA у Вас могут быть опции переопределить это поведение. EclipseLink, через невероятно полезный QueryHint.BATCH
, конечно, делает.
Когда Вы сохраняете, удаляете или обновляетесь, каскадный тип - то, что релевантно.
Так, потеряйте каскад, сохраните выборку и проблему решенными.
Лично я думаю каскад, все напрашивается на неприятности, но мнения будут варьироваться.
У достойного поставщика JPA уже будет довольно сложная (настраиваемая) схема кэширования. Возможно, необходимо ли спрашивать, почему Вы заново изобретаете то конкретное колесо?
Действительно ли это - проблема асинхронных обновлений просто для производительности? Или действительно ли что-то еще - причина?