在Base类中加入以下代码实现get方法
对get方法参数User.class的理解: 由于Session可以管理多个数据库表所对应的多个实体对象。如果要查询id为1的实体对象,Session.get方法需要知道去哪个数据库表中查询id为1的记录,所以。除了给get方法传递所要查询的实体对象的id值外,还必须给get方法传递实体对象的类型,get方法才能知道去哪个数据库表中进行查询。 控制台显示结果: name:name 在配置文件hibernate.cfg.xml文件中加入 <property name="show_sql">true</property> 可显示所执行的sql语句 load方法 懒加载 并不马上访问数据库 只有第一次应用时才访问数据库 load方法的返回对象永远不可能为空
在这里增加的打印user1类名的代码,看到load方法所返回User子类的名称。 save与persist方法的区别:在没有开启事务的时候 save方法会把数据插入到数据,之后又回滚,删掉数据。而persist方法根本就不执行插入。 总结Session的几个主要方法: 1 save,persist保存数据,persist在事务外不会产生insert语句; 2.delete,删除对象; 3.update,更新对象,如果数据库中没有记录,会出现异常; 4.get,根据id查,会立刻访问数据库。 5.load,根据id查(返回的是代理,不会立即访问数据库) 6.saveOrUpdate,merge(根据id和version的值来确定是save或update),调用merge你的对象还是托管的。 7.lock()把对象变成持久对象,但不会同步对象的状态 下午学习实体对象的三种状态与saveOrUpdate方法。