session 介绍
session 说白了就是操作数据库的对象
想要把对象保存到数据库中需要调用session的各种方法,比如:save()、update()、delete()、createQuery()等。
如何获取session
- openSession()
- getCurrentSession()
说明: 如果想使用getCurrentSession()需要再cfg.xml 文件中配置如下:
本地事物(jdbc事物)
thread
全局事物(jta)
jta
openSession() 和getCurrentSession()的区别?
- getCurrentSession 在提交事物或者回滚之后会自动关闭,openSession需要手动关闭。如果使用openSession却没有手动关闭,多次之后会导致连接池溢出。
- openSession 每次创建新的session对象,getCurrentSession使用现有的session对象(同一个对象)。
transaction 介绍
hibernate 对数据库的操作都封装在事物当中,并且默认不自动提交事物。所以如果用session保存对象时,不开启事物,或者不提交事物,那么对象不会真的保存到数据库中。
hbm 配置文件常用设置
主键
<id name="属性名" type="字段类型" column="数据库列名" length="字段长度">
//主键生成策略
<generator class="assigned" />
</id>
主键生成策略
hibernate-mapping 标签
<hibernate-mapping
schema="模式"
catalog="目录名称"
default-cascade="级联风格"
default-access="访问策略"
default-lazy="加载策略"
package="包名" >
</hibernate-mapping>
class标签
<class
name="类名"
table="表明"
batch-size="抓取策略,一次可以抓取多少条记录"
where="抓取条件"
entity-name="对应多张表名">
</class>