Solo per motivi informativi, posso dirti che la creazione del BigDecimal che ritorna dal database viene eseguita dall'implementazione del driver JDBC proprietario del metodo 'getBigDecimal' della sottoclasse 'ResultSet' specifica del database.
L'ho scoperto passando attraverso il codice sorgente di Hibernate con un debugger, mentre cercavo di trovare la risposta al mio domanda .