Como outros já disseram:o driver mapeia tudo para BigDecimal, mesmo que seja definido como NUMBER(38) (que pode ser mapeado para BigInteger)
Mas é muito fácil descobrir o que o driver mapeia. Basta fazer um getObject() na coluna do ResultSet e ver qual classe o driver gerou.
Algo como:
ResultSet rs = statement.executeQuery("select the_number_column from the_table"); if (rs.next()) { Object o = rs.getObject(1); System.out.println("Class: " + o.getClass().getName()); }