Esempio di utilizzo:
Voglio mettere sui campi classe un'annotazione personalizzata @MyContainer e quindi aggiungere automaticamente su tutti i campi le annotazioni Hibernate pertinenti (a seconda del tipo di campo e delle proprietà).
In aggiunta, ho bisogno di aggiungere l'annotazione JAXB XmlType alla classe e basare il nome del tipo sul nome della classe.
Vorrei aggiungere anche annotazioni ai campi in base ai tipi, ecc. Tutte le annotazioni aggiunte dovrebbero essere disponibili in fase di esecuzione (quindi Hibernate/JAXB può trovarle).
Sono consapevole delle seguenti opzioni:Aggiunta di annotazioni programmatiche a una classe Java
- pre-elaborazione sorgente della classe (opzione male)
- di lavorazione durante la compilazione con le API javax.annotation.processing
- Messaggio manipolazione compilation con strumenti come Java Assist
- manipolazione in fase di carico di classe con le API java.lang.instrument
- farlo con AspectJ (non abbastanza potente)
I miei obiettivi primari sono:
- mantenere la sincronia tra classe e la fonte per il debug
- Supporto di lavoro sia da Maven e IDE (Eclipse/IntelliJ)
Io apprezzo se le persone che già fatto tali cose può raccomandare l'approccio migliore per tale compito (e forse potenziali insidie).
Che dire di non generare annotazioni, ma invece di generare file di mapping Hibernate XML (hbm.xml) che possono essere caricati dalla configurazione di ibernazione? – Strelok
Grazie, è una buona idea ma preferisco l'opzione di annotazione nel mio caso poiché ho bisogno di generare anche annotazioni JAXB (e forse altre in futuro). –