Just for informational sake, I can tell you that the creation of the BigDecimal coming back from the database is done by the proprietary JDBC driver’s implementation of the ‘getBigDecimal’ method of the database-specific ‘ResultSet’ sub-class.
I found this out by stepping thru the Hibernate source code with a debugger, while trying to find the answer to my own question.