import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class UserTest {
public static void main(String args[]){
Configuration cfg = new Configuration().configure(); //獲取hibernate的配置信息
SessionFactory sf = cfg.buildSessionFactory(); //根據config建立sessionFactory
Session ses = sf.openSession(); //factory用於建立session,開啓Session,相當於開啓JDBC的Connection
Transaction ts = ses.beginTransaction(); //創建事務的對象ts
User user = new User(); //持久化對象
user.setName("kobe");
user.setTel("111111111");
try {
ses.save(user);
ts.commit();
}catch (HibernateException he){
he.printStackTrace();
ts.rollback();
}finally{
ses.close();
sf.close();
System.out.println("插入成功");
}
}
}
第二個我們看看刪,刪在SQL裏面是delete,也就是刪除,同樣在hibernate中,我們也是只需要調用一個對象,調用delete方法,就能進行刪除。
public class DeleteTest {
public static void main(String args[]) {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session ses = sf.openSession();
Transaction ts = ses.beginTransaction();
User user = new User();
user.setId("8a8308891e9c3ef3011e9c3ef4aa0001");
try {
ses.delete(user);
ts.commit();
} catch (HibernateException he) {
he.printStackTrace();
ts.rollback();
} finally {
ses.close();
sf.close();
System.out.println("刪除成功");
}
}
}
public class UpdateTest {
public static void main(String args[]) {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session ses = sf.openSession();
Transaction ts = ses.beginTransaction();
User user = new User();
user.setId("8a8308891e9c3ef3011e9c3ef4aa0001");
user.setName("kobe24");
try {
ses.update(user);
ts.commit();
} catch (HibernateException he) {
he.printStackTrace();
ts.rollback();
} finally {
ses.close();
sf.close();
System.out.println("更改成功");
}
}
}
Session ses = sf.openSession();
Transaction ts = ses.beginTransaction();
User user = (User)ses.get(User.class,"8a8308891e9c3ef3011e9c3ef4aa0001");
user.setName("kobe24");
try {
ses.update(user);
ts.commit();
這樣我們就會發現,我們只更新了我們想要更新的數據。ses不光光有這一個get方法,相同功能他還有一個load方法,兩個方法功能是相同的但是有什麼區別呢,區別就是用load方法時候他是從緩存中查找,而我們調用get方法的時候是從數據庫中查找,不過get方法他也是先從緩存中查找,如果沒有在去數據庫中查找。 第四個我們看看查,查在SQL中是select,在hibernate中我們查詢的時候有多種方法,這裏我就寫一種hibernate比較提倡的方法,就是HQL。用這個方法時候我們尤其需要注意的是他其中的from跟的不是表名,而是類名。
public class SeleteTest {
public static void main(String args[]) {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session ses = sf.openSession();
Transaction tx = ses.beginTransaction();
User user = new User();
Query query = ses.createQuery("from User");
List users = query.list(); // 序列化
Iterator it = users.iterator(); // 迭代
while (it.hasNext()) {
user = (User) it.next();
System.out.println(user.getName() + " " + user.getTel() + " ");
}
ses.close();
sf.close();
}
}