为什么在执行session.save()方法后再关联关系,仍能保存至数据库?
我有这样一段代码:
Transaction tx = session.beginTransaction();
Users user = new Users();
user.setName( "john ");
Cards card = new Cards();
card.setCardNum( "9923923 ");
card.setUsers(user);//设置关联的对象
user.getCardses().add(card);
session.save(user); //通过主控对象级联更新
tx.commit();
这段代码,没有问题,先设置好关联对象,然后通过主控对象级联更新。那么这样的代码:
Transaction tx = session.beginTransaction();
Users user = new Users();
user.setName( "john ");
Cards card = new Cards();
card.setCardNum( "9923923 ");
session.save(user);
card.setUsers(user);
user.getCardses().add(card);
tx.commit();
仍能正常保存至数据库,为什么呢?持久化类不应该是在内存中映射好关联关系,然后再保存到数据库中吗?
为什么上面的代码似乎看起来是先保存到数据库中再建立关联关系?这样符合逻辑吗?
由此我在想一个问题,Hibernate在保存数据的时候的过程是什么样的,按理来说应该是先检查内存中持久化类对象与数据库表之间的映射关系,然后再同步数据库,可是按我上面的代码来看,又不像这样,倒底是怎么一回事呢?
希望有人能解释一下,最好能把Hibernate保存数据的时候的过程详细描述一下。
[解决办法]
session.save()还没有存入数据库,只有在调用session.flush()才会真正做数据库更新操作。