Quelle est la différence entre get() et la méthode load() de la session hibernate à l'égard de l'extraction?

Quelle est la différence entre get () et la méthode load ()? à l'égard de la récupération de données approche

 public static void main(String[] args) {
    SessionFactory factory= new Configuration().configure().buildSessionFactory();
     Session session = factory.openSession();
     Transaction tx = null;
      tx = session.beginTransaction();
       System.out.println("1 st time calling load method");
        Account acc = 
               (Account)session.load(Account.class, 180); 
             System.out.println("bal"+acc.getBalance());

          System.out.println("2nd   time calling load method");
          Account  acc1=(Account)session.load(Account.class, 180); 
           System.out.println("bal"+acc1.getBalance());


        System.out.println("1 st time calling get method");
     Account acc2= (Account) session.get(Account.class, accId);

      System.out.println("bal"+acc2.getBalance());    

      System.out.println("2 st time calling get method");

     Account  acc2= (Account) session.get(Account.class, accId);

    System.out.println("bal"+acc2.getBalance());


     tx.commit();

   session.close(); 

}

Je suis sortie suivante

1 st time calling load method
Hibernate: 
/* load com.abcd.Account */ select
    account0_.ACCOUNTID as ACCOUNTID1_0_,
    account0_.ACCOUNTTYPE as ACCOUNTT2_1_0_,
    account0_.CREATIONDATE as CREATION3_1_0_,
    account0_.BALANCE as BALANCE1_0_ 
from
    a.MYACCOUNT account0_ 
where
    account0_.ACCOUNTID=?
bal3000.0
2nd   time calling load method
bal3000.0
1 st time calling get method
bal3000.0
2 st time calling get method
bal3000.0

De sortie, il est clair que la méthode get n'a pas frappé de la base de données.Il se comporte comme méthode load (). Pouvait-on me dire est ce comportement correct.

  • La base de données frappé arrive au point où vous appelez acc.getBalance() sur l'instance que vous load()-ed. Après que les données sont mises en cache dans la session et suivantes get appels sur la même session n'avez pas besoin de frapper la DB de nouveau.
InformationsquelleAutor sar | 2014-03-03