Co musze zrobić żeby korzystać JTA

0

Korzystam z serwera WildFly i mam problem ponieważ nie chcę ręcznie zarządzać transakcjami i chce używać @PersiatnceContext ale nie wiem jak sobie to ustawić?

W przyszłości chce korzystać z Springa czy w nim można korzystać z JTA?

0

Potrzebujesz klasy w tym stylu?

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;

/**
 * Created by kgoralski on 20/07/16.
 */
@ApplicationScoped
public class EntityManagerProducer {
    @PersistenceUnit
    private EntityManagerFactory emf;

    @Produces
    @Default
    @RequestScoped
    public EntityManager create() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager em) {
        if (em.isOpen()) {
            em.close();
        }
    }
}
0

no i persistance.xml w resources.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
    <persistence-unit name="PersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        </properties>
    </persistence-unit>
</persistence>
0

Jeżeli używasz serwera Wildfly to rozumiem że jest to Java EE, jeśli tak to aby skorzystać z automatycznych transakcji na metodach użyj adnotacji @Stateless na klasie. Przykład:

@Stateless
public class UserService {
  @PersistenceContext
  private EntityManager entityManager;

  public void addUser(User user) {
   entityManager.save(user);
  }
}

Jeżeli używasz Springa to do transakcji służy adnotacja @Transactional.

0

w Java EE też jest:
javax.transaction.Transactional;

0

Dziękuje za odpowiedzi. Możecie mi powiedzieć co to jest <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> i jak to się ustawia?

0

Znacznik <jta-data-source> definiuje źródło bazy danych, które jest skonfigurowane w serwerze aplikacyjnym (w Twoim przypadku na serwerze Wildfly). String "java:jboss/datasources/ExampleDS" to ścieżka JNDI do tej konfiguracji bazy danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1