session.save(c)会将瞬时对象转换成持久化对象,但是c对象并没有主键,在配置文件中配置了主键生成策略为native,执行session.save(c)会发出insert语句,在commit方法那里打了断点,看到此时的id是有值的,但是此时数据库中并没有数据,session缓存里面的c是如何有id的?
@Test
public void test2(){
Configuration conf = new Configuration().configure();
SessionFactory sessionFactory = conf.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Customer c = new Customer();
c.setCust_name("测试");
session.save(c);
tx.commit();
session.close();
}
生成Id的源码