Quel est le niveau d'isolation par défaut hibernate utilise si pas explicitement?

J'ai une application qui utilise hibernate version 3.6.4, et c3p0 version 0.9.1.2 pour le regroupement de connexion. Mon SGBD sous-jacent est la version de MySql 5.0.67.

Mon installation de MySql indique que la valeur par défaut niveau d'isolation de transaction est "la reproductibilité de la LECTURE" (4):

mysql> select @@GLOBAL.tx_isolation, @@tx_isolation;
+-----------------------+-----------------+
| @@GLOBAL.tx_isolation | @@tx_isolation  |
+-----------------------+-----------------+
| REPEATABLE-READ       | REPEATABLE-READ |
+-----------------------+-----------------+

Je n'ai pas changé la configuration ou le niveau d'isolation de transaction au sein de hibernate.cfg.xml ou n'importe où dans mon application. À partir de l'application, j'utilise le code suivant pour imprimer la configuration:

DatabaseMetaData meta = getSession().connection().getMetaData();
System.out.println("Default Tx Isolation: " + meta.getDefaultTransactionIsolation());
System.out.println("Current Tx Isolation: " + getSession().connection().getTransactionIsolation());

Et j'obtiens les résultats suivants:

Default Tx Isolation: 2 (=READ_COMMITTED)
Current Tx Isolation: 4 (=REPEATABLE_READ)

Donc, mes questions sont les suivantes:

  1. D'où vient le "2" valeur vient? Car la valeur par défaut est la REPEATABLE_READ, pourquoi getDefaultTransactionIsolation() retourne READ_COMMITTED?
  2. Quel est le niveau d'isolation que hibernate utilise après tout? REPEATABLE_READ ou READ_COMMITTED?
  3. J'ai pensé que, lorsque aucun niveau d'isolation est défini, hibernate doit utiliser la base de données par défaut. Est-ce vrai? Peut-être que le jbdc pilote de mise en œuvre définit un défaut sur sa propre et hibernate utilise ce?