2017-04-20 7 views
0

GETはデータベース理由に当たった場合、私は---取得し、私のコードのload.Exampleがこれですとの違いを学ぶためにgetメソッドはいつデータベースにヒットしますか?

public class StudentTest { 
    public static void main(String[] args) { 
     SessionFactory sessionfactory=new Configuration().configure().buildSessionFactory(); 
     Session session=sessionfactory.openSession(); 

     Student student=new Student(); 
     student.setName("Rajat"); 
     student.setDate(new Date()); 
     student.setCompany("Yash"); 

     session.persist(student); 

     Transaction t1=session.beginTransaction(); 
     session.getTransaction().commit(); 

     student.setName("Prashant"); 

     Student getStudent1=(Student)session.get(Student.class, 1); 
     System.out.println("-----------get------------------"); 
     System.out.println(getStudent1); 


     session.close(); 
     sessionfactory.close(); 
    } 

をしようとしています?出力は

Student [id=1, name=Prashant, company=Yash, date=Thu Apr 20 17:22:20 IST 2017] 

ですが、データベースにはRajatという名前が保存されています。

答えて

0

getはオブジェクトをデータベースから直接ロードするため、getを実行するとログ上でselect sqlが表示されます。

あなたが実際に要求されたSQLは、セットがそれを私は負荷をしようとした代わりに、その後も、それは名前=のPrashantを返す取得し、データベースに

+0

フェッチされる実行されますセットを使用するときのロードは、要求されたセットのプロキシを提供しますラジャットです。上記の例でデータベースから実際のデータを取得するにはどうすればいいですか? – Prashant

+0

ええ、System.out.println(getStudent1)行の前に同じデータを返します。ロードを使用している場合は、変数がproxingをオブジェクトに保持していません。データベースからのデータとそれを使用して、実際のデータを取得しています –

+0

実際のデータはどうですか?データベーステーブルの名前はRajatで、出力はPrashantです。 – Prashant

関連する問題