1、Hibernate是一个数据持久化层的ORM框架。
hibernate是一个开源的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装。使得java程序员可以随心所欲的使用对象编程思维来操作数据库。
2、编写流程:
(a)导入jar包;
(b)创建数据库和表;
(c)编写核心配置文件(hibernate.cfg.xml)--->配置获得链接等参数;
(d)编写映射文件hibernate mapping(*.hbm.xml);
(e) 编写代码并测试;
3、hibernate常用的一些方法:
delete(object objname)--->删除指定的持久化对象;
deleteAll(Conllection conllectionName)--->删除集合内全部持久化对象;
find(String parameter)--->根据HQL查询字符串来返回实体集合,find方法执行时会先查缓存,如果缓存找不到再
找数据库,再找不到就返回null;
get(Class clazzName,Serializable id)--->根据主键加载特定的持久化实例;
注:get()查到数据返回实例,查不到返回空;load()查到数据返回实例,查不到抛出异常ObjectNotFoundException.
save(Object objName)--->保存新的实例;
saveOrUpdate(Object objName)--->根据实例状态选择保存或跟新;
注:如果对象是临时对象,没有id就调用save()方法;有id的游离对象就调用update()方法;
update(Object objName)更新实例状态,实例必须持久化;
Object execute() 是HibernateCallback接口类;
bulkUpdate( ) 通过语句直接增加更新删除实体;------一般用于批量。
4、核心配置文件编写
<hibernate-configuration>
<session-factory>
<!--数据库连接基本四项-->
<property name="..." >com.mysql.jdbc.Driver</property>
<property name="..." >jdbc:mysql://192.168.*.*:3306/***?characterEncoding=utf8</property>
<property name="..." >username</property>
<property name="..." >password</property>
<!--添加映射文件-->
<mapping resource=".......User.hbm.xml"/>
...........
............
</session-factory>
</hibernate-configuration>
5、Hibernate 主键生成策略
Assigned:在插入数据时主键由用户自己添加;
Sequece:调用数据库的Sequence来生成主键;---要设定序列名,否则hibernate无法找到。
increment 插入数据时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以
在多个实例运行的时候不能使用这个方法;
6、实体对象的三种状态:
a、自由状态:不曾进行持久化,来与任何session相关联;
b、持久化状态:仅与一个session相关联;
注:持久化实例可以通过调用delete()变成游离态。通过get()和load()得到的实例都是持久状态;
c、游离状态:已经进行了持久化,但当前未与任何session关联。
7、session介绍:
session的生命周期绑在一个屋里的食物上面(tansaction);
session 的主要功能提供对映射实体类的创建,读取和删除;
8、Hibernate进行持久化的主要步骤:
a、Hibernate的初始化,创建Configuration对象。
b、创建SessionFactory实例。
c、创建Session实例。
d、创建Transaction实例 开启一个事务。
e、利用session的方法进行持久化操作。
f、提交操作结果并结束事务。
g、关闭session--->与数据库断开连接。