文章目录
Student st=new Student(); //此时的对象是临时态
st.setName("陈加兵");
session的get()
、load()
等方法获得的对象都是持久对象。
//使用get方法获取id=2的对象,此时的Student是持久态
Student student=session.get(Student.class, 2);
session.save()
方法将一个临时态的对象转换成持久态//新建的Student对象,这个是临时态对象,并没有数据库关联
Student student = new Student();
student.setAge(22);
student.setName("陈加兵");
// 保存数据到数据库,此时的student就是一个持久态的对象,与session有了关联,并且数据库中也有了这条数据
session.save(student);
update()
方法 将一个游离对象转变为持久对象save()
方法,因为游离态对象在数据库中是对应着一条数据的(数据库中有id的值与其对应),如果此时调用save()方法,那么就会向其中插入一条数据(此时的主键是自增长的)。因此要想一个游离态的对象变成持久态的对象,必须使用update()
方法@Test
public void Test() {
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
//此时的student为临时态
Student student=new Student();
//设置了id的值,并且这个id=2在数据库中有这么一条数据,因此是游离态
student.setId(2);
//调用了update()方法,此时变成持久态的对象
session.update(student);
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
@Test
public void TestPersit() {
Session session = null;
Transaction transaction = null;
try {
// 创建session
session = HibernateUntil.getSession();
// 开始事务
transaction = session.beginTransaction();
//使用get方法获取id=2的对象,此时的Student是持久态
Student student=session.get(Student.class, 2);
//修改了持久态的对象,这里只要session提交了就会自动更新到数据库中,不需要使用update()方法
student.setName("陈加兵");
//更新Student对象到数据库中,但是student是持久态,因此这里的语句是多余
// session.update(student);
// 提交事务
transaction.commit();
} catch (Exception exception) {
transaction.rollback(); // 事务回滚
} finally {
if (session!=null) {
session.close();
}
}
}
Student student2=new Student();
student.setId(2); //设置了id的值,这个id的值在数据库中对应一条记录
student.setName("陈加兵");