/**
* 測試uuid主鍵生成策略
*/
public void testSave1() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
User1 user = new User1();
user.setName("李四");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//因爲user的主鍵生成側路採用的是uuid,所以調用完成save後,只是將user納入到了session的管理
//不會發出insert語句,但是id已經生成,session中existsInDatebase狀態爲false
session.save(user);
//調用flush,hibernate會清理緩存,執行sql
//如果數據庫的隔離級別設置爲爲提交讀,那麼我們可以看到flush過的數據
//並且session中existsInDatebase狀態爲true
session.flush();
//提交事務
//默認情況下commit操作會先執行flush清理緩存,所以不用顯示的調用flush
//commit後數據是無法回滾的
tx.commit();
}catch(Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
/**
* 測試native主鍵生成策略
*/
public void testSave2() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
User2 user = new User2();
user.setName("張三1");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//因爲user的主鍵生成策略爲native,所以調用session.save後,將執行insert語句,返回有數據庫生成的id
//納入了session的管理,修改了session中existsInDatebase狀態爲true
//如果數據庫的隔離級別設置爲爲提交讀,那麼我們可以看到save過的數據
session.save(user);
tx.commit();
}catch(Exception e) {
e.printStackTrace();
tx.rollback();
}finally {
HibernateUtils.closeSession(session);
}
}