public class SessionTest extends TestCase {
public void testSave1() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
// 临时状态
User user = new User();
user.setName("张三");
user.setPassword("123");
// 持久态
session.save(user);
user.setName("李四");
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
HibernateUtils.closeSession(session);
}
}
public void testSave2() {
Session session = null;
Transaction tx = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
// 临时状态
User user = new User();
user.setName("张三");
user.setPassword("123");
// 持久态
session.save(user);
user.setName("李四");
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
HibernateUtils.closeSession(session);
}
}
public void testSave3() {
Session session = null;
Transaction tx = null;
User user = null;
try {
session = HibernateUtils.getSession();
tx = session.beginTransaction();
// 临时状态
user = new User();
user.setName("张三");
user.setPassword("123");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
// 持久态
session.save(user);
user.setName("李四");
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
HibernateUtils.closeSession(session);
}
// 托管状态
user.setName("王五");
try {
session = HibernateUtils.getSession();
session.beginTransaction();
// 将detached状态的对象重新纳入session管理
// 此时将变为persistent状态的对象
session.update(user);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
Transeint
* 没有被session管理
* 在数据库中没有与之匹配的记录
Persistent
* 纳入session管理
* 在数据库中有与之匹配的记录
* 当属性发生改变,在清理缓存时(脏数据检查)会自动和数据库同步
Detached
* 没有被session管理
* 在数据库中存在与之匹配的记录
hibernate 中对象三种状态
最新推荐文章于 2019-09-03 16:59:21 发布