Hibernate项目搭建技术要点

48 篇文章 0 订阅
30 篇文章 0 订阅

一.Hibernate是什么?

  • Hibernate: 冬眠
  • 属于持久层框架: 操作数据库的框架.
  • 属于ORM框架的范畴

二.ORM是什么?

  • Object Relational Mapping: 对象关系映射型框架.

  • 关系映射:

  • 将java的对象对应数据库的表的一行数据. (java Object table row)

  • 将java对象中的属性对应数据库表中的列. (Object field row column)
    三.为什么要使用Hibernate?

  • 1.可以自动生成连接管理类(BaseDao不用手写了)

  • 2.自动生成sql语句(表dao不用手写了)
    四.Hibernate的基本使用

  • 1.新建java/web project

  • 2.加入驱动jar包(hibernate实际上是jdbc的高级封装)

  • 3.加入hibernate框架支持
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.配置hibernate主配置文件
    <session-factory>
    连接工厂属性配置
    1.connection配置
    2.hibernate配置
    驱动类的包名+类名
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    rl地址
    <property name="connection.url">jdbc:mysql://127.0.0.1:3306/first_mysql</property>
    用户名
    <property name="connection.username">root</property>
    密码
    <property name="connection.password">root</property>
    </session-factory>
    5.测试连接数据库

public static void main(String[] args) {                   
	//1.获得配置文件对象                                           
	Configuration config = new Configuration().configure();
	//2.获得连接工厂对象                                           
	SessionFactory factory = config.buildSessionFactory(); 
	//3.获得连接会话对象                                           
	Session session = factory.openSession();                                                              
	System.out.println(session.isOpen());   
	/*给大家推荐一个免费的学习交流君样:826021115  */                                                                      
	//4.session用完之后需要标记归还 方法 是 close();                    
	session.close();                                                                                             
	System.out.println(session.isOpen());                  
}    

6.新建实体类对应数据库的表结构
7.新建实体类映射文件

  • 7.1在entity包中新建xml文件
  • 7.2文件名: 实体类类名+Mapping.hbm.xml
  • 7.3复制hibernate主配置信息,并且将所有约束中的Configuration改为Mapping(注意大写字母开头)
  • 7.4将映射文件的位置编写在主配置文件中,让Configuration类在读取主配置文件的同时顺便读取实体类映射文件.
    8.注意增删改操作需要事先开启事务
    //开启数据库的事务
    Transaction trans = session.beginTransaction();
    Serializable id = session.save(stu);
    System.out.println("增加成功: "+id);

//提交数据库的事务
trans.commit();

9.打开SQL语句显示功能以及sql语句格式化显示功能
<!-- SQL语句打印配置 -->
<property name="hibernate.show_sql">true</property>
<!-- SQL语句格式化配置 -->
<property name="hibernate.format_sql">true</property>
10.手动封装连接管理类

常见异常:
Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
Hibernate:
update
student
set
name=?,
height=?,
birth=?,
jointime=?,
cid=?
where
id=?
修改时Hibernate无法从对象中获得修改时必须要的主键值.

Hibernate在执行修改后发现许多列都没有值(或为null或为0)
因为hibernate的修改必须基于查询.

五.连接模板配置
在这里插入图片描述
在这里插入图片描述
右键点击连接模板空白处,选中New…
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
六.自动生成连接管理类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
七.Hibernate反转引擎
反转引擎作用:
将数据库的表自动转成实体类
在这里插入图片描述
Jdbc中称实体类为entity
Hibernate中称实体类为pojo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
八.主键生成策略
1.由数据库决定主键值
1.1 native: 自适应

  • 由hibernate检测不同的数据库使用不同的主键生成策略.
  • MySQL(auto_increment) identity
  • 当MySQL数据库的表使用了auto_increment生成主键时可以使用hibernate的identity策略
  • SQL Server(identity(1,1)) identity
  • 当SQL Server数据库的表使用了identity生成主键时可以使用hibernate的identity策略
  • Oracle(sequence) sequence
  • 当Oracle数据库的表使用了sequence生成主键时可以使用hibernate的sequence策略
    1.2 identity
    Sql server通过程序连接操作数据库,需要打开TCP/IP
    在这里插入图片描述
    在这里插入图片描述

最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,SpringBoot、Spring Cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君羊:826021115

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值