API简介
Configuration 配置:配置文件对象
通过配置文件方式获取:
1) configure()
2) configure(String resource):获取指定位置的配置文件(一般不用)
硬编码方式添加映射资源:(两种方式)
1) addResource(String resource) :导入一个指定位置的映射文件
2) addClass(Class clazz):导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件【最为常用】
不在主文件中配置映射文件,在java文件中加载映射文件的完整代码:
SessionFactory sessionFactory = newConfiguration().configure().addClass(“demain.Class”). buildSessionFactory()
SessionFactory获取Session工厂
openSession()
getCurrentSession()
close()
Session 很重要的一个对象
操作对象的方法
save(Object)
update(Object)
delete(Object)
查询的方法
createQuery(String) --> Query
createCriteria(Class)
管理事务的方法
beginTransaction()--> Transaction
getTransaction() --> Transaction 获取当前Session中关联的事务对象
其他的方法
...
Transaction 事务
commit()
rollback()
Query 查询
list() 查询一个结果集合。
uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。
...
--------------------------------
Hibernate主配置文件
1,配置的key前面的hibernate.前缀 可以有,也可以没有。如hibernate.dialect或dialect都可以。
2,按作用可分为三类:
1,数据库信息
<property...>
方言、JdbcUrl、驱动、用户名、密码
2,导入映射文件
<mapping...>
3,其他配置
<property...>
show_sql 显示生成的SQL语句
format_sql 格式化生成的SQL语句
hbm2ddl.auto 自动生成表结构
hibernate.hbm2ddl.auto
生成表结构的两种方式:
这两种方式都是通过表的配置文件来完成的。在主配置文件中都需要使用mapping映射出表的配置文件。
1, hbm2ddl.auto
1) 在hibernate.cfg.xml中配置。
2) 格式:<property name=”hbm2ddl.auto”>update</property>
3) Name对应的参数:
a) Create:先删除,再创建。
b) Update:如果不存在就创建,不一样就更新,一样就什么都不做。
c) Crate-drop:初始化时创建,SessionFactory执行close()时删除表。
d) Validate:验证表结构是否一致,如果不一致,就抛异常。
2, 使用SchemaExport工具类
1) 创建一个SchemaExport对象:
Configuration cfg = new Configration().configure();
SchemaExport se = new SchemaExport(cfg)
2) 调用crate(true,true)方法:
a) 第一个参数:是否打印DDL语句到控制台
b) 第二个参数:数据库是否执行.sql脚本,创建数据库等操作。
注意:只能建表,不能建库
映射配置
1. 作用:说明表与对象的映射关系。
2. 普通属性:(数据库中的基本类型,如字符串、日期、数字等)
1) name属性:对象中的属性名,必须要有。
2) type属性:类型,如果不写,Hibernate会自动检测。
a) 可以写Java中类的全名。
b) 是写hibernate类型。
3) column属性:对应表中的列名,如果没有,默认为属性名。
4) length属性:长度,不是所有的类型都有长度属性,比如varchar有,但int没有,如果不写默认为255。
5) not-null属性:非空约束,默认为false
3. Property标签:其中只有name不可以省略。
4. 当列表与关键字冲突时,可以通过column属性指定一个其他的列名。或是使用反引号包围起来。(不建议使用反引号)
5. 大数据时使用text:指定使用text类型时,最好再指定length,以确定生成的SQL类型是能够存放指定数量的字符的。
6. 大数据二进制文件时:使用二进制类型,同时最好指定长度
==============
主键:
如果是数字,建议使用包装类型。
1. 指定主键:id
Id元素用于映射主键,其中子标签generator用于指定主键生成策略。
2. 主键生成策略:
1) identity:使用数据库的自动增长策略,不是所有的数据库都支持。Oracle不支持。<generator class="identity"/>
2) sequence:在 DB2,PostgreSQL,Oracle,SAP DB,McKoi 中使用序列(sequence)在使用Oracle数据库时可以使用这一个
<generator class="sequence"/>
3) hilo:使用高低位算法生成主键值。添加了一张额外的表,所有数据都支持。<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<paramname="max_lo">100</param>
</generator>
a) hi_value:添加表的名称。
b) next_value:添加表中列的名字。
c) max_lo:每次自动添加序号之间的间隔。
4) native:根据底层数据库能力选择identity、sequence或者hilo中的一个。
<generatorclass="native"></generator>
【这个最为常用】
5) uuid:由Hibernate自动生成UUID并指定为主键值。
<generator class="uuid"></generator>
【这个也最为常用】