/ / Jaka jest różnica funkcjonalna między używaniem EntityManager bezpośrednio a JpaRepository - spring, jpa

Jaka jest różnica funkcjonalna między bezpośrednim korzystaniem z EntityManager a JpaRepository - spring, jpa

Od pewnego czasu używam następujących bezpośrednio w klasach usług:

@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
}

Alternatywnie mogłem zbudować AbstractDao rozszerzony przez PersonDao. Te klasy będą używać EntityManager

public abstract class AbstractDao<PK extends Serializable, T> {

private final Class<T> persistentClass;

@SuppressWarnings("unchecked")
public AbstractDao(){
this.persistentClass =(Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1];
}

@PersistenceContext
EntityManager entityManager;

public T findByKey(PK key) {
return entityManager.find(persistentClass, key);
}

public List<T> findAll() {
return entityManager.createQuery( "from " + persistentClass.getName()).getResultList();
}

public void save( T entity ){
entityManager.persist( entity );
}

Czy jest jakaś różnica funkcjonalna między tymi podejściami - inne niż więcej kodu w późniejszym? Co spowodowałoby, że wybrałbym jeden nad drugim?

Odpowiedzi:

1 dla odpowiedzi № 1

Spring Data w tym przypadku obejmie to, co masz w drugim przykładzie. Inne struktury będą miały podobne podejście, ukrywając EntityManager i dostarczając API out of box.

Nie ma różnicy (biorąc pod uwagę tylko wyniki) pomiędzy dwoma podejściami, a nawet notatką inne niż więcej kodu w późniejszym czasie? nie jest prawdą, ponieważ jestem pewien, że każda struktura będzie zawierała tony linii kodu, które wspierają operacje. :)