1.hibernate.cfg.xml常用配置
属性名字 含义
hibernate.show_sql 是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试。
hibernate.format_sql 输出到控制台的SQL语句进行排版,便于阅读。建议设置为true。
hbm2ddl.auto 可以帮助由java代码生成数据库脚本,进而生成具体的表结构。create|update
|create-drop|validate
hibernate.default_schema 默认的数据库
hibernate.dialect 配置Hibernate数据库方言,HIbernate可针对特殊的数据库进行优化。
注意:hibernate的前缀可以省略,即:hibernate.dialect等同于dialect。
-session可以理解为操作数据库的对象。
-session与connection,是多对一关系,每个session都有一个与之对应的connection,
一个connection不同时刻可以提供多个session使用。
-把对象保存在关系数据库中需要调用session的各种方法,
如:save(),update(),delete(),createQuery()等。
3.transaction简介
-hibernate对数据库的操作都是封装在事务当中,并且默认是非自动提交的方式。
所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会
真正保存在数据库中。
-如果你想让hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,
获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做)
注意:不开启事务就不能将对象保存到数据库中!
4.session详解
-如何获得session对象
1)openSession
2)getCurrentSession
如果使用getCurrentSession需要再hibernate.cfg.xml文件中进行配置:
如果是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
如果是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>
openSession与getCurrentSession的区别:
1.getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession
需要你手动关闭。如果openSession而没有手动关闭,多次之后会导致连接池溢出。
2.openSession每次创建新的session对象,getCurrentSession使用现有的session对象。
5.对象关系映射常用配置
<hibernate-mapping
schema="schemaName"
catalog="catalogName"
default-cascade="cascade_style" //级联风格
default-access="field|property|ClassName" //访问策略
default-lazy="true|false" //加载策略
package="packagename"
/>
<class
name="ClassName"
table="tableName"
batch-size="N"
where="condition"
entity-name="EntityName"
/>
<id>
name="propertyName"
type="typename"
column="column_name"
length="length"
<generator class="generatorClass"
</id>
属性名字 含义
hibernate.show_sql 是否把Hibernate运行时的SQL语句输出到控制台,编码阶段便于测试。
hibernate.format_sql 输出到控制台的SQL语句进行排版,便于阅读。建议设置为true。
hbm2ddl.auto 可以帮助由java代码生成数据库脚本,进而生成具体的表结构。create|update
|create-drop|validate
hibernate.default_schema 默认的数据库
hibernate.dialect 配置Hibernate数据库方言,HIbernate可针对特殊的数据库进行优化。
注意:hibernate的前缀可以省略,即:hibernate.dialect等同于dialect。
2.session简介
-session可以理解为操作数据库的对象。
-session与connection,是多对一关系,每个session都有一个与之对应的connection,
一个connection不同时刻可以提供多个session使用。
-把对象保存在关系数据库中需要调用session的各种方法,
如:save(),update(),delete(),createQuery()等。
3.transaction简介
-hibernate对数据库的操作都是封装在事务当中,并且默认是非自动提交的方式。
所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会
真正保存在数据库中。
-如果你想让hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,
获得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做)
注意:不开启事务就不能将对象保存到数据库中!
4.session详解
-如何获得session对象
1)openSession
2)getCurrentSession
如果使用getCurrentSession需要再hibernate.cfg.xml文件中进行配置:
如果是本地事务(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>
如果是全局事务(jta事务)
<property name="hibernate.current_session_context_class">jta</property>
openSession与getCurrentSession的区别:
1.getCurrentSession在事务提交或者回滚之后会自动关闭,而openSession
需要你手动关闭。如果openSession而没有手动关闭,多次之后会导致连接池溢出。
2.openSession每次创建新的session对象,getCurrentSession使用现有的session对象。
5.对象关系映射常用配置
<hibernate-mapping
schema="schemaName"
catalog="catalogName"
default-cascade="cascade_style" //级联风格
default-access="field|property|ClassName" //访问策略
default-lazy="true|false" //加载策略
package="packagename"
/>
<class
name="ClassName"
table="tableName"
batch-size="N"
where="condition"
entity-name="EntityName"
/>
<id>
name="propertyName"
type="typename"
column="column_name"
length="length"
<generator class="generatorClass"
</id>