1 session.flush() 把当前session缓存中修改的数据,都提交到数据库中。(和当前的session事物无关,哪怕是没开启事物,都会提交)
2 session.clear() 清空当前session中缓存的数据。在excuteHql或sql时,如果db中的数据和session不一致。需要clear掉session中的缓存数据
3 session.excuteUpdate() 会立马执行到数据库中(并返回相应行数),与当前事物,并不会等提交事物, 没有事物也会执行成功。(如果多条hql需要组成一个事物,待调研:如修改库存表的库存量,累积商户售卖总量)。
4 session.update(bean) 执行修改的一定是hibernate的代理bean(即查询出的存在于session缓存中的bean),否则会触发新增。
5 session缓存中bean.setName(“张三”) session缓存代理bean属性被修改后。并不需要调用session.update(bean),在提交事物时会自动检测修改了的bean,并进行提交。这点特别要注意。如果不是真的修改,千万别动bean的数据。(比如计算过程把这bean作为临时对象来处理,随意修改bean的数据)
Hibernate 中如何获得库表所有字段的名称
Configuration conf = new Configuration();
conf.configure();
Iterator iter = conf.getTableMappings();
while ( iter.hasNext() ) {
Table table = ( Table ) iter.next();
System.out.println(table.getName());
Iterator ics = table.getColumnIterator();
while (ics.hasNext()){
Column col = (Column) ics.next();
System.out.println(col.getName());
}