У меня есть клиент-серверное приложение, которое я сделал для проекта в моем университете, и у меня возникают проблемы с синхронизацией кэша базы данных JPA. Я использую управляемый приложениями EntityManager, о котором я узнал из других сообщений, что это очень сложно использовать, потому что вы всегда должны быть осторожны, чтобы открыть и закрыть его.Как внедрить EntityManager в Java SE с помощью @PersistenceContext (EclipseLink)
Лучшим решением, которое я нашел в этой проблеме, является использование управляемого контейнером EntityManager, инициализированного с помощью аннотации @PersitenceContext, и таким образом мне больше не придется беспокоиться об открытии и закрытии EM.
Итак, мой реальный вопрос заключается в том, как выполняется инъекция EntityManager в Java SE с использованием EclipseLink JPA, потому что я никогда не пропускал исключение NullPointerException. Я приложу некоторые принт-экраны к примеру этой операции и, как я думаю, это нужно сделать.
Для моего проекта я использую jdk 1.8, базовую конфигурацию jpa (2.1) и EclipseLink 2.5.x в качестве платформы. На стороне БД я использую MySql-Server и не сервер приложений (этот должен быть разработан мной).
persistence.xml файл
2 классов, которые содержат пример: https://gyazo.com/a7b1a372875a259096dc220653cd5bcd
Как Ласло сказал, вы можете использовать только «управляемый контейнер EntityManager», если у вас есть «контейнер». «Контейнер» - это имя для фреймворка, такого как сервер Java EE или Spring. Все, что нужно запомнить о _all_ Java-аннотациях, это то, что они просто метаданные без какого-либо поведения. Некоторый другой код должен прочитать аннотацию, а затем действовать по ней: «контейнер». – DavidS
(Кстати, когда вы отправляете код, разместите фактический код, а не скриншоты. Используйте разметку кода, чтобы получить правильный отступ и раскраску.) – DavidS
вы также можете запустить контейнер cdi самостоятельно и без весны: https: // deltaspike .apache.org / –