17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

35.Hibernate

1. Strtus2代替了servlethibernate框架代替了dbutilsjdbc

Mapping:映射

2. Orm分四级:

Hibernate属于4级,完全面向对象的操作数据库

Mybatis:属于2

dbUtils1

3. Hibernate 框架搭建:

1)导包:数据库驱动包

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

2)  创建数据库,准备表

3)书写orm元数据(对象与表的映射配置文件)

1)导入约束(以主配置约束为例)

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

2)实体

3)Orm元数据

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

4)书写主配置文件

参数均来自于hibernate-release-5.0.7.Final-project-etc-hibernate.properties文件

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

4. 配置文件详解

1)orm元数据配置

<hibernate-mapping pakeage=”cn.xxx”>  </hibername-mapping>

Pakeage属性填写一个包名,那么在元素内部所有需要写完整类名的属性均可以写简单类名。

<class name=””  table=”” >

  <id  name=””  column=””> 

    <generator> </generator>

  </id>

  <property  name=””  column=””  type=””   not-null=””></property>

</class>

Class元素配置实体与表的对应关系

  name属性:完整类名

  Table属性:填写数据库表名

Id:元素配置主键映射属性

  name 属性填写主键对应属性名

  column 填写表中的主键列名 。不写此属性默认使用name

generato元素:主键生成策略

Property元素:配除了id(主键)之外的普通id映射

  name 属性填写属性名

  column 填写表中的列名

  Type (可选)填写列(属性)的类型,hibernate会自动检测实体        的属性类型,有三种写法

  Not-null (可选配置该列是否不能为空,默认false(能为空)

  Length(可选):配置数据库的属性的长度,默认配置数据库类型 的    最大长度

 

2)hibernate主配置

1)必选属性配置 5

 17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

2)可选属性配置

 17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

3)元数据引入配置

 17.12.27,web学习第三十五天,还有一年,努力吧青年Hibernate

5. hibernateAPI详解

Configuration对象

配置加载类,用于加载主配置,orm元数据加载

Configuration conf=new Configuration();//调用空餐构造

Conf.configure(); //读取指定主配置文件-空餐-加载src下的     hibernate.cfg.xml文件

如果主配置中已经引入映射配置,不需要手动加载orm元数据

SessionFactory sf=conf.buildSessionFactory();//根据配置信息创建SessionFactory对象

SessionFactory对象

sessionFactory功能:用于创建操作数据库核心对象session对象的工厂,

sessionFactory负责保存和使用所有配置信息,消耗内存资源非常大

             属于线程安全的设计

保证web项目中,只创建一个sessionFactory

   Sf.openSession();//打开一个新的session对象

   sf.getCurrentSession();//获得一个与线程绑定的session对象

Session

Session对象功能

表达hibernate框架与数据库之间的连接(会话),session类似于connection,还可以完成对数据库的增删改查操作,session是操作数据库的核心对象。

Transaction tx=Session.getTransaction();//获得操作事务的Transaction对象

Transaction tx2=session.beginTransaction(); 获得并操作事务的Transaction对象(常用)

Transaction对象

Session.save();//保存

Tx2.commit();

Tx2.rollback();

Session.close();//释放资源

Sf.close();//释放资源

 

6. 若想查看框架源码则需要关联源码:

hibernate-release-5.0.7.Final.zip