Hibernate入门

Hibernate概述

什么是框架:

1、编程时,使用框架后,可以帮我们实现一部分功能,使用框架的好处,可以少写一部分代码实现功能。

什么是Hibernate框架

1、hibernate框架应用在JavaEE三层架构中的dao层

2、在dao层里面做对数据库的CRUD操作,使用hibernate实现CRUD操作,底层就是jdbc,hibernate是对jdbc进行封装,不需要写sql语句实现

3、hibernate是开源的轻量级框架

什么是orm思想

1、hibernate使用orm思想对数据库进行CRUD操作

2、orm:object relational mapping 对象关系映射

(1)让实体类和数据库表进行一一对应关系

让实体类首先和数据库表对应

让实体类属性和表里面字段对应

(2)不需要直接操作数据库表,而操作表对应实体类对象


Hibernate入门

搭建hibernate环境

第一步:导入hibernate的jar包

1、required_jar

2、jpa_jar

3、使用hibernate的时候,会有日志信息的输出,导入其他的日志jar包来输出日志信息

第二步:创建实体类

使用hibernate的时候,不需要手动去创建数据库表,hibernate可以帮忙创建数据库表

第三步:配置实体类和数据库的映射关系

使用配置文件实现映射的关系

(1)创建xml格式的配置文件

- 映射配置文件名称和位置没有固定要求

- 一般在实体类所在包中创建

(2)配置文件是xml格式,在配置文件中首先引入xml约束

- 在hibernate中引入dtd约束

(3)配置映射关系

第四步:创建hibernate的核心配置文件

(1)核心配置文件格式xml,配置文件的名称和位置是固定的

- 位置:必须在src下

- 名称:hibernate.cfg.xml

(2)引入dtd约束

(3)hibernate操作过程中,只会加载核心配置文件,其他配置文件不会加载

第一部分:配置数据库信息

第二部分:配置hibernate信息

第三部分:把映射文件放到核心配置文件中

 

实现添加操作

控制台输出

Hibernate中的配置文件

映射配置文件

1、映射配置文件名称和位置没有固定的要求

2、映射配置文件中,id和property标签中name是实体类的相关属性,column是数据库表中的相关字段

3、class标签name的值是实体类的全路径  com.demo.entity.User

4、property标签中可以用type属性来设置数据库生成表的字段的属性

核心配置文件

数据库部分+hibernate部分+映射文件部分

SessionFactory

项目中可能多次要对数据库表进行操作,若每次操作都产生一个SessionFactory对象,然后对应生成数据库中的表,是非常消耗资源的,因此通过编写一个工具类来解决这个问题,保证一个项目只有一个sessionFactory。

Session

1、session类似于jdbc中的connection

2、调用session的不同方法实现CRUD操作

· 添加save()方法

· 修改update()方法

· 删除delete()方法

· 根据id查询get()方法

3、session对象是单线程对象

 

实体类编写规则

1、实体类中的属性都是私有的

2、私有属性使用公开的set/get方法操作

3、要求实体类中有一个属性作为唯一值(一般使用id值)

4、实体类属性建议不适用基本数据类型,而使用基本数据类型对应的包装类

· 比如说用int类型表示学生的成绩,0分可以用int score = 0;表示,但是缺考却表示不出来,若使用int类型的包装类,则可以用null来表示缺考的学生的成绩。

 

Hibernate主键生成策略

1、hibernate要求实体类中有一个属性作为唯一值,对应表中的主键

2、主键生成策略有很多种

3、用的最多的是native和uuid,用uuid时主键的数据类型要是String字符串类型

Hibernate操作实体类

查询操作:session.get();

添加操作:session.save()

修改操作:session.update();

删除操作:session.delete();

实体类的三种状态

1、瞬时态:对象中没有id值,对象和session没有关联 

   瞬时状态就是刚new出来一个对象,还没有被保存到数据库中

 User user = new User();

 user.setName("test");

 user.serPassword("123");

 user.setAddress("china");

2、持久态:对象中有id值,对象和session有关联

  持久化状态就是已经被保存到数据库中

 User user = session.get(User.class,1);

3、托管态:对象中有id值,对象与session没有关联

  离线状态就是数据库中有,但是session中不存在该对象

 saveOrUpdate()方法:当对象为瞬时态的时候,是insert操作,当对象是托管态和持久态的时候,是update操作

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值