Non sono certo un programmatore professionista, ma sto cercando di imparare, e provengo da linguaggi piu "crudi" di Java, quali ad esempio c e c++ (un po di c# ma nulla di serio).
E' un po di tempo che mi sto avventurando nel mondo di Java, creando piccole applicazioni senza una grande complessità e che per questo non necessitano di una struttura ben organizzata.

Sto ora cercando di realizzare un progetto un po piu ampio, che mi rendo conto avra bisogno di una struttura fatta come si deve e progettata a priori (fin ora non conoscendo bene il linguaggio e quello che poteva offrire ho tirato su i programmi cosi come venivano; una botta al cercio e una alla botte, cercando di far stare il tutto insieme)

Ho sempre pensato: chi fa da se fa per 3, e così ho sempre scritto tutto il codice che mi serviva ripartendo dalle basi, cercando di ottimizzare il piu possibile le prestazioni per riduerre gli sprechi. Ma per un progratto di grandi dimensioni non e' certo possibile riscrivere tutto da capo, e cosi ho pensato che fosse l'ora di appoggiarmi ad un qualche framework.

Ho iniziato a guardarmi in giro, e il primo problema che mi si e' presentato e' l'accesso ai dati.
Fino ad ora ho sempre fatto con il JConnector scrivendo tutte le query che mi servivano e gestendo il set di risultati.
La cosa mi sembra efficiente ma forse un po complicata da modificare in futuro, così ho iniziato a testare i vari framework ( a volte con risultati catastrofici)
Molti non sono nemmeno riuscito a farli partire...ma uno di quelli che ha funzionato e' Hibernate, dopo 2 giorni di studio sono riuscito a ottenere i dati provenienti dal database utilizzando l'EntityManager (usando le annotazioni, senza xml). Una semplice select che ha restituito 50 linee su una tabella di circa 2000 linee ha impiegato diversi secondi...un tempo inaccettabile per un operazione cosi semplice. La stessa operazione usando il JConnector impiega meno di un secondo.
Ho quindi iniziato a dubitare, prima di tutto di non aver sbagliato qualcosa nel configurare Hibernate, e in seguito dell efficienza di un simile approccio.

E' sicuramente molto bello ricevere come risposta a un interrogazione una lista di EJB che rappresentano tutti i dati letti (trascurando il fatto che in questo modo vengono lette tutte le colonne mentre invece potrebbero servirmene solo alcune) ma l'overhead e' spaventosamente eccessivo.

Questo mi ha fatto pensare che il caro vecchio sql scritto a mano sia ancora il migliore. Ma fosse davvero cosi non mi spiego l'esistenza di tutti questi framework che sulla carta dovrebbero risolvere tutti i problemi di un programmatore.

Ho dato uno sguardo anche a Spring, sentendone decantare le qualità in lungo e in largo. L'impressione e' stata quella che utilizzi tecniche come l'Inversion of Control che gia io inconsapevolmente (inconsapevole che qualcuno ne avesse definito le regole e gli avesse dato un nome) utilizzavo nei miei programmi per rendere il codice più riusabile (certamente non sempre, e magari non nel modo corretto, ma il principio di base era pur quello). Adottare un simile framework per sfruttare massivamente tecniche simili che comportano potenza di calcolo addizionale per fornire funzionalità che potrebbero essere non necessarie mi sembra un overkill.

La domanda quindi e': sono io che non ho capito o allo stato attuale l'uso di questi framework e' sconveniente?