[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();
留言
張貼留言