2016-02-06 16 views
7

Czy mogę skonfigurować Hibernate, aby automatycznie skanować pakiety, aby utworzyć SessionFactory z fasoli z adnotacjami o numerach @Entity?Czy można hibernować pakiety skanowania, aby automatycznie utworzyć SessionFactory?

Obecnie używam

Configuration config = new Configuration() ; 
config.addAnnotatedClass(MyEntity.class); 

Nie chcę używać hibernate.cfg.xml skonfigurować mapowania.

Uwaga: chcę to osiągnąć w prostym projekcie Java bez użycia Springa lub innych frameworków.

Podobne pytanie otrzymałem już wcześniej w Spring, ale chcę to osiągnąć bez Springa czy innych frameworków. Jestem otwarty na prostą bibliotekę, która to robi.

Odpowiedz

5

Nie. Nie można powiedzieć Hibernate, aby skanować pakiety dla klas trwałych, nawet w ostatniej wersji Hibernate 5. Configuration ma metodę addPackage(), ale jest przeznaczona do odczytu "metadanych na poziomie pakietu" (.package-info - pliki).

Nie chcesz użyć Spring, więc co można zrobić:

Korzystanie biegły-hibernacji

Można użyć z fluent-hibernate bibliotece (nie trzeba mieć inne słoiki wyjątkiem biblioteki)

Na hibernacji 4 i hibernacji 5:

Configuration configuration = new Configuration(); 
EntityScanner.scanPackages("my.com.entities", "my.com.other.entities") 
    .addTo(configuration); 
SessionFactory sessionFactory = configuration.buildSessionFactory(); 

Używanie nowej Hibernate 5 ładowania API:

List<Class<?>> classes = EntityScanner 
     .scanPackages("my.com.entities", "my.com.other.entities").result(); 

MetadataSources metadataSources = new MetadataSources(); 
for (Class<?> annotatedClass : classes) { 
    metadataSources.addAnnotatedClass(annotatedClass); 
} 

SessionFactory sessionFactory = metadataSources.buildMetadata() 
    .buildSessionFactory(); 

korzystania z innych bibliotek

Jeśli już korzystać z biblioteki, które można wykorzystać do skanowania, na przykład Reflections istnieje projekt testowy z przykładami wykorzystania różnych bibliotek do skanowania jednostek: hibernate-scanners-test.

Powiązane problemy