Ho un'applicazione con circa 3000 entità (so che è molto, ma non posso cambiarla). Quando l'applicazione carica, Hibernate impiega un minuto per eseguire tutta la strumentazione e il materiale di installazione di SessionFactory.
Mi chiedevo se posso configurare Hibernate per fare la strumentazione sulle classi originali durante il tempo di costruzione.
In questo modo posso evitare 3000 ulteriori classi proxy generate e l'enorme sovraccarico per l'avvio dell'applicazione.
Ho trovato alcune informazioni sulla strumentazione del tempo di costruzione di Hibernate (org.hibernate.tool.instrument.javassist.InstrumentTask
) ma non è chiaro se questo sostituisce totalmente la strumentazione di runtime o gestisce solo il meccanismo di recupero delle proprietà pigro di Hibernate.
Tutte le informazioni su come spostare la generazione del proxy per costruire il tempo saranno apprezzate.Spostamento della strumentazione di Hibernate per creare il tempo
risposta
Sì, è possibile. Esiste un'attività Ant nel codice Hibernate: org.hibernate.tool.instrument.javassist.InstrumentTask
.
<target name="instrument" depends="compile">
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath refid="<some-ant-path-including-hibernate-core-jar>"/>
<classpath path="<your-classes-path>"/>
</taskdef>
<instrument verbose="true">
<fileset dir="<your-classes>">
<include name="*.class"/>
</fileset>
</instrument>
</target>
Ho visto anche alcuni Maven.
Ho già visto i frammenti di plugin ma la domanda è se sostituisce la strumentazione in fase di esecuzione (e ridurrà il tempo di caricamento)? –
Trovato la soluzione su Internet. Provato rapidamente, e sembra funzionare. Spero di non essere in ritardo ..
L'idea è di usare maven-antrun-plugin. Devi averlo nel tuo pom.xml nella sezione build/plugins.
Nell'esempio seguente, non dimenticare: - per sostituire $ {hibernate.version} e $ {javassist.version} con la versione che stai utilizzando. - di modificare le regole comprendono di avere InstrumentTask gira solo su vostra entità
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>Instrument domain classes</id>
<configuration>
<tasks>
<taskdef name="instrument"
classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.dependency.classpath"/>
<path refid="maven.plugin.classpath"/>
</classpath>
</taskdef>
<instrument verbose="true">
<fileset dir="${project.build.outputDirectory}">
<include name="**/model/**/*.class"/>
</fileset>
</instrument>
</tasks>
</configuration>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
</dependencies>
</plugin>
Dal Hibernate 4.2.8 è possibile utilizzare il hibernate-migliorare-maven-plugin:
<build>
<plugins>
<plugin>
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-test-resources</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 1. hibernate mostra il tempo di esecuzione della query
- 2. Animazione di ridimensionamento e spostamento di UIView allo stesso tempo
- 3. Utilizzo della semantica di spostamento per un operatore di cast
- 4. Hibernate lento per l'acquisizione della connessione Postgres
- 5. Spostamento della bussola di google maps
- 6. Semplificazione della query di Hibernate
- 7. Come creare la strumentazione Man in the Middle
- 8. Errore durante l'esecuzione della strumentazione a causa di 'java.lang.NullPointerException'
- 9. Qual è il nome della classe dialetto MariaDB per Hibernate?
- 10. Hibernate: imposta il timeout della query predefinito?
- 11. L'esecuzione della strumentazione non è riuscita a causa di 'java.lang.IllegalAccessError'
- 12. SVN: spostamento di file dall'interno della cartella
- 13. JPA/Hibernate ritorno BigDecimal non molto tempo
- 14. callgrind lento con strumentazione disattivata
- 15. Ricerca dell'operazione di spostamento a 128 bit di sse per il valore di spostamento non immediato
- 16. È un costruttore di spostamento privato per impedire lo spostamento?
- 17. dinamica bytecode strumentazione - problema
- 18. Calcolo della velocità di spostamento dell'utente in Android
- 19. Hibernate non mi permette di utilizzare entità nome della classe per il nome della tabella
- 20. Spostamento del pitch in tempo reale con AVAudioEngine usando Swift
- 21. JPA Hibernate Persistenza eccezione [PersistenceUnit: default] Impossibile creare Hibernate SessionFactory
- 22. Come continuare un test della strumentazione Android eseguito dopo l'eccezione?
- 23. Strumentazione dinamica con Clang
- 24. Spostamento delle immagini durante il trascinamento della selezione
- 25. Come creare animazioni di spostamento/ridimensionamento in Android?
- 26. Tempo di inattività della macchina
- 27. Come creare un generatoreNumero cliente per ogni azienda in Hibernate
- 28. Come utilizzare la funzionalità di opencv corrispondente per il rilevamento della contraffazione copia-spostamento
- 29. diverso tempo della sessione per diversi utenti
- 30. Spostamento della testa master su una diramazione
Dopo aver attivato la fase di compilazione strumentazione Non ho notato alcun cambiamento nel tempo di caricamento/consumo di memoria. –