简介
hibernate的前缀可以省略,即:hibernate.dialect等同于dialect
session可以理解为数据库对象
session与connection,是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用
hibernate对数据操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中
openSession()和getCurrentSession()的区别
1.getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession需要手动关闭。如果没有关闭,多次之后导致连接池溢出。
2.openSession每次创建新的session对象,getCurrentSession()使用现有的session对象
hbm配置文件常用设置
主键生成策略
1.单一主键
assigned :由Java应用程序负责生成(手工赋值)
native:由底层数据库自动生成标识符,Mysql:increment,Oracle:sequence。
get方法和load方法的区别
1.在不考虑缓存的情况下,get方法会在调用之后立即发送SQL语句,返回持久化对象。
2.load方法只返回一个代理对象,该代理对象只保存了实体对象的id,直到使用实体对象的非主键属性时,才会发送SQL语句。
3.查询数据库不存在的数据时,get方法会返回null,load方法会返回异常ObjectNotFoundException