1.hibernate.cfg.xml常用配置
1.1.常用的属性
2.Session
2.1.hibernate程序的执行流程
2.2.不建议使用jdbc的connection操作数据库,而是通过session对象操作数据库。
2.3.session可以理解为操作数据库的对象,每个session都有一个与之对应的connection对象,一个connection对象不同时刻可以供多个session使用。
2.4.session的各种方法:save()、update()、delete()、createQuery()等
3.transaction(事物)
3.1.hibernate事物需要主动提交,也可以调用session的doWork()方法,方法传入Work接口的匿名实现类的实例(在实现接口Work的方法execute中实现自动提交)。
4.session的详解
4.1.如何获取session对象
4.1.1.openSession
4.1.2.getCurrentSession
1)如果是第二种方法需要在hibernate.cfg.xml中进行配置:
如果是本地事物(jdbc事物):
<property name=”hibernate_current_session_context_class”>thread</property>
如果是全局事物(jta事物):
<property name=”hibernate_current_session_context_class”>jta</property>
4.2.openSession和geCurrentSession的区别
4.2.1.getCurrentSession在事物提交或者回滚后会自动关闭,而openSession需要手动关闭。如果使用openSession而没有手动关闭,多次连接后会导致连接池溢出的情况。
4.2.2.openSession每次使用都会创建新的session对象,而getCurrentSession则使用已存在的session对象。
5.hbm配置(对象-关系映射文档)
5.1.hibernate-mapping标签常用属性
<hibernate-mapping
schema = "schemaName"
catalog = "catalogName"
default-cascade = "cascade_style" //联级的风格
default-access = "field|property|ClassName" //访问策略
defalut-lazy = "true|false" //加载策略
package = packagename
/>
5.2.class标签常用属性
<class
name = "ClassName"
table = "tableName"
batch-size = "N"
where = "condition"
entity-name = "EntityName"
/>
5.3.id标签(主键)常用属性
<id
name = "propertyName"
type = "typename">
<column = "column_name"/>
<length = "length"/>
<generator class = "generatorClass" />
</id>
5.3.1.主键生成策略