Hibernate项目搭建技术要点

编程入门 行业动态 更新时间:2024-10-22 04:50:57

Hibernate项目搭建技术<a href=https://www.elefans.com/category/jswz/34/1769303.html style=要点"/>

Hibernate项目搭建技术要点

一.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);

//提交数据库的事务
transmit();

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

更多推荐

Hibernate项目搭建技术要点

本文发布于:2024-03-07 10:32:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:要点   项目   技术   Hibernate

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!