Интеграция Hibernate-JTA-JPA-EJB-GlassFish-MySQL: 1- Hibernate-JPA-EJB-GlassFish-MySql. Это руководство предназначено для интеграции hibernate.4.3.5, EJB и GlassFish.4.0 в IDE NetBeans.8.0.Создайте веб-проект в сетевых компонентах и добавьте в проект файлы Jiber Hibernate, другие настройки, связанные с настройкой MySql и glassfish, очень просты, поэтому я не буду описывать в этой статье, а затем создаю файл persistence.xml следующим образом:
<persistence-unit name="omidashouriPU" transaction-type="Resource_Local">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/YourSchemaName"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="yourpassword"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
В вашем классе EJB (класс, который помечен @Stateless) для создания EntityManager используйте следующий синтаксис:
EntityManagerFactory emf = Persistence.createEntityManagerFactory ("omidashouriPU");EntityManager em = emf.createEntityManager ();em = emf.createEntityManager ();em.getTransaction () начинается ().em.persist (YourEntityObject);em.getTransaction (). end ();
Как вы знаете, когда вы используете «action-type = "Resource_Local», вы должны сами управлять транзакцией, то есть управлять открытием и закрытиемнаша транзакция является нашей ответственностью.
2- Hibernate-JPA-JTA-EJB-GlassFish-MySql: это руководство предназначено для интеграции hibernate.4.3.5, EJB, JTA и GlassFish.4.0 в IDE NetBeans.8.0.Создайте веб-проект в сетевых компонентах (внимание: не создавайте веб-проект с помощью maven, поскольку в IDE Netbeans.8.0 есть ошибка) и добавьте в проект файлы JAR-файлов гибернации, а другие настройки, связанные с настройкой MySql и glassfish, очень просты (простоопределить пул соединений и JDBC в разделе «Ресурсы»> «JDBC: пулы соединений JDBC и ресурсы JDBC», руководство по этому вопросу можно найти в Интернете, если вы его ищете) (внимание: для определения правильного JNDI сначала создайте временный проект, который зависит от JNDI, например JPAпроект в glassfish, затем скопируйте настройки, созданные в Glassfish для этого проекта, потому что в glassfish есть ошибка, когда вы собираетесь получить ping для MySQl при создании вашего первого пула подключений, если вы создаете его самостоятельно в glassfish), поэтомуЯ не описываю в этой статье, а затем создаю файл persistence.xml следующим образом:
<persistence-unit name="omidashouriPU" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/yourJNDI (which you defined in glassfish) </jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/YourSchemaName"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="yourpassword"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
В вашем классе EJB (класс, аннотированный @Stateless) для создания EntityManager используйте следующий синтаксис:
@PersistenceContext(unitName = " omidashouriPU ")
EntityManager em;
em.persist(YourEntityObject);
Как ты знаешь, когда тебеВы используете «транзакция-тип =« JTA », управление транзакцией не с вами, это означает, что управление открытием и закрытием транзакции является обязанностью сервера приложений (здесь GlassFish).В самом деле, если вы проверите свой файл persistence.xml в дизайне режима, перед выпадающим списком поставщика постоянства вы увидите, что теперь добавлен hibernate.
Уважаемый читатель, у меня было 3 дня на решение этой проблемы, пожалуйста, добавьте свойОпыт этой статьи для того, чтобы завершить ее, по любому вопросу вы можете отправить мне письмо на omidashouri@gmail.com.