I know i am not taking advantage of using Hibernate [...]
Hibernate è un po 'più di un semplice ORM automatico che dovrebbe mappare oggetti Java completi a tabelle di database complete. Fornisce la mappatura di tutte le operazioni, non solo delle query; inserisce ed elimina i lavori in modo diretto, anche se non si desidera inserire un oggetto completo nel database. Inoltre, Hibernate viene fornito con cache di livello 2 (Ehcache) che migliora significativamente le prestazioni.
Riguardo alla selezione dei soli oggetti di cui hai bisogno; L'ibernazione comporta anche miglioramenti. Per esempio, io, uno sviluppatore di OO, ho più familiarità con il modello di oggetto piuttosto che con uno sviluppatore di database che ha familiarità con SQL e le relazioni; Hibernate mi viene in aiuto lasciandomi usare un linguaggio di query più object-friendly (HQL, JPQL). Inoltre, anche se non sa mappare certe tabelle in un'altra classe, la converte comunque in una matrice (o lista di matrici, se in una query vengono restituite più voci); non hai ancora bisogno di ottenere ResultSet
e iterare su di esso.
Un'altra alternativa è l'utilizzo del recupero pigro e la chiamata al database verrà effettuata solo quando si chiama effettivamente il metodo. Se non sono necessari determinati campi, impostarli come pigri e, se non sono necessari, non vengono recuperati.
Come ultime parole, devo dire che gli strumenti ORM automatici come Hibernate sono buoni e migliorano notevolmente la produttività, ma non sono una pallottola d'argento. Non sono adatti in tutti gli scenari; se vuoi caratteristiche di database speciali o non hai a che fare con un dominio abbastanza complesso, probabilmente stai meglio con il buon vecchio JDBC o con la migliore alternativa di Spring, JdbcTemplate
.