[Java] Hibernate CRUD
一切設定好後(有使用 hbm.xml 對應檔案,和持久化物件中使用 Annotation兩種)
Hibernate 中使用 CRUD (Create、Read、Update、Delete)
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import java.util.List; public class TestIO { private static SessionFactory factory; public static void main(String[] args) { factory = new Configuration() .configure() .buildSessionFactory(); //若使用 Annotation 則在 buildSessionFactory()之前要 .addAnnotatedClass(Obj.class) Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); // Create Obj myObj1 = new Obj("data2", data3); session.save(myObj1); // 由建構子設定 myObj1 兩個值(id 由 Hibernate 決定),執行session.save() 會 // 準備將之依照對應 column 各值存入資料庫表格中 // Read 用主鍵取特定資料 Obj myObj2 = (Obj)session.get(Obj.class, 5); System.out.println(myObj2); // 從資料庫表格中取出 id=5 的 row 資料,依照各 column 將值給 myObj2 的varId、var2、var3 // 並用 .toString() 印出來 // Read 使用 HQL 取出符合條件的資料,可能多筆使用 List List<Obj> qryResult = session.createQuery("from Obj obj where obj.var2='data2'").list(); for(Obj obj : qryResult) { System.out.println(obj); } // 在資料庫中找出 var2 值為 'data2' 的串列起來,注意使用物件變數名而非表格欄位 // Update 用主鍵取特定資料後更新某些欄位 Obj myObj3 = session.get(Obj.class, 2); myObj3.setVar2("newData"); // 取出 id=2 的資料並由Setter設定新值,等執行 transaction.commit() 時即 update // Update 將所有資料的某欄全部更新 session.createQuery("update Obj set var3=7").executeUpdate(); // 將表格中所有資料的 col3 全更新成數值 7 // Delete 刪除指定主鍵的資料 Obj myObj4 = session.get(Obj.class, 10); session.delete(myObj4); // 執行 transaction.commit() 時將刪除 id=10 的資料 // Delete 用 Update 的方法來刪除資料 session.createQuery("delete from Obj where varId=9").executeUpdate(); // 刪除 id=9 的資料 transaction.commit(); factory.close(); session.close();
留言
張貼留言