2016-02-06 22 views
7

Posso configurare Hibernate per scansionare i pacchetti automaticamente per creare un SessionFactory da fagioli con annotazione @Entity?È possibile sospendere i pacchetti di scansione per creare automaticamente SessionFactory?

Attualmente sto usando

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

Non voglio usare hibernate.cfg.xml per configurare i mapping.

Si prega di notare che voglio raggiungere questo obiettivo in un semplice progetto Java senza utilizzare Spring o tali framework.

La domanda simile è stata esaudita utilizzando Spring prima, ma voglio realizzarla senza utilizzare Spring o altri framework. Sono aperto ad alcune semplici librerie che fanno questo.

risposta

5

No. Non è possibile pronunciare Hibernate per analizzare i pacchetti per le classi persistenti anche con l'ultima versione di Hibernate 5. Configuration ha il metodo addPackage(), ma è per la lettura dei "metadati a livello di pacchetto" (.package-info - file).

Se non si desidera utilizzare primavera, quindi cosa si può fare:

Utilizzando fluente-ibernazione

È possibile utilizzare da fluent-hibernate libreria (non sarà necessario avere altri barattoli , tranne la biblioteca)

per Hibernate 4 e 5 Hibernate:

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

utilizza una nuova API di Hibernate 5 bootstrapping:

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(); 

Utilizzando altre biblioteche

Se si utilizza già una libreria che può essere utilizzato per la scansione, per un esempio Reflections, non v'è un progetto di prova con esempi di utilizzo di varie librerie per la scansione delle entità: hibernate-scanners-test.