SORU
8 EKİM 2012, PAZARTESİ


Nasıl Bahar Veri JPA büyük projeler için Hazırda farkı nedir?

Zor bir zaman, yeni bir proje için Hazırda sopa ile, ya da ayaklarımı JPA ve yeni Bahar Veri uygulama ile ıslak almalısınız karar yaşıyorum.

Mütevazı sorgu gereksinimleri ile Bahar Veriler çerçevesinde büyük projeler veya küçük projeler için tasarlanmıştır?

Ben kesinlikle @Query annotation kullanarak kod azaltma avantajı görürken, dinamik sorgular için ne yapıyorsun? Ne bir tasarruf uygulamak istediğinizde() oldukça karmaşık olan yöntem?

Belgeler, ana depo uygulayan, ama eğer çöp depo kendisi üzerinde herhangi bir süper yöntemlerine erişmek istiyorsanız ne Özel arayüzü ve bir uygulama yapmak için söylüyor? Çöp depo özel bir başka yolu yok uygular. Garip bir tasarım gibi görünüyor.

Bu çerçeve karmaşık ve büyük uygulama zorlukları karşılamak olup olmadığı belirsiz. Asla Uyku ile birçok sorunla karşılaştım ve iyi emektar'ın yerine Bahar verilerle JPA git sokmayı düşünüyorum.

Ne yapmalıyım? Ne komplikasyonlar ve maliyetler öngörülmeyen eğer Bahar Veri JPA ile gidersem karşılaşacak mıyım?

CEVAP
9 EKİM 2012, Salı


Yani, spring-data karmaşık sorgular ile yardımcı olan bazı ekstra büyü yapar. İlk başta garip ve tamamen docs atlamak ama çok güçlü ve yararlıdır.

'Hem Bahar söylüyorum. Repositoryİmpl 9* *özel ve özel bir `oluşturuyor İşte bir örnek:

Yapılandırma sınıfıhala ihtiyaç duyulan xml config işaretaçıklama depolarınızı gösteren paketi (*Impl sınıflar için otomatik olarak şimdi görünüyor):

@Configuration
@EnableJpaRepositories(basePackages = {"com.examples.repositories"})
@EnableTransactionManagement
public class MyConfiguration {
}

jpa-repositories.xml - depoları nerede Spring söyle. Ayrıca Spring CustomImpl dosya adı ile özel depolar için bak söyle:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

<jpa:repositories base-package="com.example.repositories" repository-impl-postfix="CustomImpl" />

</beans>

MyObjectRepository - Bu şerh koyabilirsiniz ve sorgu yöntemleri unannotated. Bu depo arabirimi Custom çıkar nasıl not:

@Transactional
public interface MyObjectRepository extends JpaRepository<MyObject, Integer>, MyObjectRepositoryCustom {

    List<MyObject> findByName(String name);

    @Query("select * from my_object where name = ?0 or middle_name = ?0")
    List<MyObject> findByFirstNameOrMiddleName(String name);

}

MyObjectRepositoryCustom - daha karmaşık ve mümkün olmayan depo yöntemleri basit bir sorgu ya da bir açıklama ile muamele:

public interface MyObjectRepositoryCustom {

    List<MyObject> findByNameWithWeirdOrdering(String name);
}

Aslında EntityManager bir autowired ile: bu yöntemleri uygulamak nerede MyObjectRepositoryCustomImpl -

public class MyObjectRepositoryCustomImpl implements MyObjectRepositoryCustom {

    @Autowired
    private EntityManager entityManager;

    public final List<MyObject> findByNameWithWeirdOrdering(String name) {
        Query query = query(where("name").is(name);
        query.sort().on("whatever", Order.ASC);
        return entityManager.find(query, MyObject.class);
    }
}

İnanılmaz, bu bir araya geliyor ve her iki arabirimleri (ve CRUD arabirimi uygulamak) yöntemleri ne zaman bir harita:

myObjectRepository.

Göreceksiniz:

myObjectRepository.save()
myObjectRepository.findAll()
myObjectRepository.findByName()
myObjectRepository.findByFirstNameOrMiddleName()
myObjectRepository.findByNameWithWeirdOrdering()

Gerçekten işe yarıyor mu. Ve sorgulama için bir arayüz. spring-data gerçekten büyük bir uygulama için hazırdır. Ve basit bir açıklama ya da itebilirsiniz daha fazla sorgular sen tek daha iyi.

Tüm bu Spring Data Jpa site belgelenmiştir.

İyi şanslar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FrameCityJackal

    FrameCityJac

    4 Aralık 2010
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • michal lelkowski

    michal lelko

    9 Temmuz 2006