Hibernate(二)---Hibernte的开发步骤

Hibernate(二)---Hibernte的开发步骤_第1张图片
①创建持久化Java类
· 提供一个无参的构造器:使Hibernate可以使用Constructor.newInstance() 来实例化持久化类。
· 提供一个标识属性(identifier property): 通常映射为数据库表的主键字段. 如果没有该属性,一些功能将不起作用,如:Session.saveOrUpdate()。
· 为类的持久化类字段声明访问方法(get/set): Hibernate对JavaBeans 风格的属性实行持久化。
· 使用非 final 类: 在运行时生成代理是 Hibernate 的一个重要的功能. 如果持久化类没有实现任何接口, Hibnernate 使用 CGLIB 生成代理. 如果使用的是 final 类, 则无法生成 CGLIB 代理。
· 重写 eqauls 和 hashCode 方法: 如果需要把持久化类的实例放到 Set 中(当需要进行关联映射时), 则应该重写这两个方法。
注: Hibernate 不要求持久化类继承任何父类或实现接口,这可以保证代码不被污染。这就是Hibernate被称为低侵入式设计的原因。
②创建对象-关系映射文件
· Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射. 在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句。
· 映射文件的扩展名为 .hbm.xml。
· 映射文件说明
1)hibernate配置文件层次结构:
Hibernate(二)---Hibernte的开发步骤_第2张图片
hibernate-mapping
Hibernate(二)---Hibernte的开发步骤_第3张图片
~~class
Hibernate(二)---Hibernte的开发步骤_第4张图片
映射对象标识符
· 在对象-关系映射文件中, 元素用来设置对象标识符. 子元素用来设定标识符生成器
Hibernate(二)---Hibernte的开发步骤_第5张图片
Hibernate(二)---Hibernte的开发步骤_第6张图片
· Hibernate提供的内置标识符生成器:
Hibernate(二)---Hibernte的开发步骤_第7张图片
~~property
Hibernate(二)---Hibernte的开发步骤_第8张图片
Hibernate(二)---Hibernte的开发步骤_第9张图片
注:hibernate,java类型以及sql之间的对应关系
Hibernate(二)---Hibernte的开发步骤_第10张图片
Hibernate(二)---Hibernte的开发步骤_第11张图片
③创建Hibernate的配置文件
· Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性每个 Hibernate 配置文件对应一个 Configuration 对象。

· Hibernate配置文件可以有两种格式: 1)hibernate.properties; 2)hibernate.cfg.xml (常用)
· Hibernate常用属性:
~~Jdbc 连接属性:

属性名 描述
connection.url 数据库URL
connection.username 数据库用户名
connection.password 数据库密码
connection.driver_class 数据库JDBC驱动
dialect 配置数据库的方言,根据底层的数据库不同产生不同的 sql 语句,Hibernate 会针对数据库的特性在访问时进行优化

~~C3P0 数据库连接池属性:

属性名 描述
hibernate.c3p0.max_size 数据库连接池的最大连接数
hibernate.c3p0.min_size 数据库连接池的最小连接数
hibernate.c3p0.timeout 数据库连接池中连接对象在多长时间没有使用过后,就应该被销毁
hibernate.c3p0.max_statements 缓存 Statement 对象的数量
hibernate.c3p0.idle_test_period 表示连接池检测线程多长时间检测一次池内的所有链接对象是否超时.。
hibernate.c3p0.acquire_increment 当数据库连接池中的连接耗尽时, 同一时刻获取多少个数据库连接
show_sql 是否将运行期生成的SQL输出到日志以供调试。取值 true
format_sql 是否将 SQL 转化为格式良好的 SQL . 取值 true
hbm2ddl.auto 在启动和停止时自动地创建,更新或删除数据库模式。取值 create
hibernate.jdbc.fetch_size 设定 JDBC 的 Statement 读取数据的时候每次从数据库中取出的记录条数。
hibernate.jdbc.batch_size 设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小。

注:hbm2ddl.auto 四个取值的意义:
* create : 会根据你的model类来生成表,但是每次运行都会删除上一次的表,重新生成表,哪怕2次没有任何改变 ;
* create-drop : 根据model类生成表,但是sessionFactory一关闭,表就自动删除;
* update : 最常用的属性,也根据model类生成表,即使表结构改变了,表中的行仍然存在,不会删除以前的行 ;
* validate : 只会和数据库中的表进行比较,不会创建新表,但是会插入新值;

你可能感兴趣的:(hibernate)