千家信息网

如何理解Hibernate技术

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何理解Hibernate技术",在日常操作中,相信很多人在如何理解Hibernate技术问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何理解Hib
千家信息网最后更新 2026年11月01日如何理解Hibernate技术

这篇文章主要介绍"如何理解Hibernate技术",在日常操作中,相信很多人在如何理解Hibernate技术问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何理解Hibernate技术"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

传统的MVC开发模式

  1. ❝M:Model包括pojo、service、dao。

  2. V:View 包括jsp、html、模块引擎。

  3. C:Controll 包括我们动态网络资源的技术:Servlet。❞

SSH框架在开发中的作用

  • ❝S:Struts/SpringMVC: 实际上解决的是我们的控制器的问题(简单的可以认为是Servlet的封装)。

  • Spring: 整合其余的第三方框架,就是为 Srvice 层提供事务。

  • Hibernate:其实就是DAO层的解决方案。❞

Hibernate是什么

1.Hibernate是一个非侵入式ORMapping框架

  • 非侵入式框架:我们在使用这个框架的时候,不需要继承或者实现这个框架中的类或者接口,这种类型的框架就叫做非侵入式的框架,非侵入式的框架在使用的时候更好的和原有的框架实现了解耦

  • 侵入式框架:我们在使用这个框架的时候,需要继承或者实现这个框架中的某些类或者接口,这种框架叫做侵入式框架

2.ORMapping解析

  • O:Object

  • R:Relation

  • M:Mapping 映射

  • a.Hibernate能够将Java对象通过映射的关系映射到数据库

  • b.Hibernate能够将数据库的数据通过映射关系映射到Java对象

Hibernate就是能够通过操作Java对象来达到操作数据库的一门技术。

Hibernate能干什么

简单的说:实现数据库的所有操作(CRUD),是原有DAO层的一个解决方案,也是一个替代品。

Hibernate的简单使用

「简单使用:」

导包,将下载下来的required+jpa相关的包放到一个文件里面

在src下面创建hibernate.cfg.xml配置文件

                            com.mysql.jdbc.Driver                  jdbc:mysql:///qianyu                  root                  root                  org.hibernate.dialect.MySQL5Dialect                  update                                                     

创建Java的类的对象

 public class User implements Serializable{   private static final long serialVersionUID = -6949433888868762441L;   private int uId;    private String userName;    private String userPwd;   public User(int uId, String userName, String userPwd) {   super();   this.uId = uId;   this.userName = userName;   this.userPwd = userPwd;  }   public User() {   super();  }   public int getuId() {   return uId;  }   public void setuId(int uId) {   this.uId = uId;  }   public String getUserName() {   return userName;  }   public void setUserName(String userName) {   this.userName = userName;  }   public String getUserPwd() {   return userPwd;  }   public void setUserPwd(String userPwd) {   this.userPwd = userPwd;  }   @Override  public String toString() {   return "User [uId=" + uId + ", userName=" + userName + ", userPwd=" + userPwd + "]";  }   }

编写测试类

@Test  public void testHelloWord() throws Exception {   //引入配置文件   Configuration cfg=new Configuration().configure("hibernate.cfg.xml");   //创建SessionFactory对象   SessionFactory sf=cfg.buildSessionFactory();   //创建会话   Session session=sf.openSession();   //开启事务   session.beginTransaction();   //操作对象      User user=new User(1,"小羽","110");      //开始操作   session.save(user);      //进行事务的提交      session.getTransaction().commit();      session.close();    }

Hibernate中的hibernate.cfg.xml配置文件的详解

                                com.mysql.jdbc.Driver                  jdbc:mysql:///qianyu                  root                  root                                    org.hibernate.dialect.MySQL5Dialect                           update                  true                  true                                                                      

Hibernate的xxx.hbm.xml配置文件的详解

                                                        

Hibernate中的CRUD的实现

添加数据     session.save(user);     session.persist(user);  修改数据         session.beginTransaction();    //查询数据(积极的加载)   User user=session.get(User.class,1);   //下面支持的是懒加载   user.setUserName("xxxxx");   user.setUserPwd("yyyyy");   session.getTransaction().commit();  数据查询         //查询数据(积极的加载)   User user=session.get(User.class,1);   //下面支持的是懒加载   User user2=session.load(User.class,1);      删除数据         //查询数据(积极的加载)   User user=session.get(User.class,1);   session.delete(user);

Hibernate中的帮助类的编写

public class HibernateUtils {  private static Configuration cfg=null;  private static SessionFactory sf=null;  private static ThreadLocal threadLocal=null;  static{   //初始化线程的局部变量   threadLocal=new ThreadLocal();   //加载配置文件   cfg=new Configuration().configure("config/hibernate.cfg.xml");   //生成我们的工厂   sf=cfg.buildSessionFactory();  }    /**   * 获取session的玩法   * @Title: getSession      * @Description: TODO   * @param: @return         * @return: Session         * @throws   */  public static Session getSession(){    Session session=threadLocal.get();    if(null==session){     session=sf.openSession();     session.beginTransaction();     threadLocal.set(session);    }    return session;  }    /**   * 关闭Session   * @Title: close      * @Description: TODO   * @param:          * @return: void         * @throws   */  public static void close(){   Session session=threadLocal.get();   if(null!=session){    session.getTransaction().commit();    session.close();    threadLocal.remove();   }  } }

注意事项

  1. 鸿蒙官方战略合作共建--HarmonyOS技术社区

  2. 我们hibernate.cfg.xml配置文件中这个括hibernate.是可以省略

  3. 为什么不开启事务也能查询到数据?是因为默认Hibernate存在只读事务,只读事务是可以完成数据的读的操作的,如果是要完成增删改的话那么就需要读写事务,这个时候就需要开启事务

Save和Persist的区别

  • Save在保存数据的时候,如果id是自增长,你给定id和不给定id都是对的。

  • Persist在保存数据的时候,如果id是自增长的,你给定id是会报错的。

到此,关于"如何理解Hibernate技术"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 框架 事务 技术 文件 对象 时候 配置 查询 数据库 学习 就是 帮助 方案 更多 解决方案 问题 增长 开发 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 互联网科技活动banner 猪兼强互联网科技 互联网金融科技平台 玖二柒互联网科技公司待遇 济南华为互联网科技产业总部基地 小米互联网科技园设置 成都互联网科技公司100强 团飞科技与伯堂互联网服务平台 互联网科技与管理 互联网金融中的现代科技 厦门比较好的科技互联网公司 科技互联网大厂 互联网媒体平台算高科技产业 开一家科技互联网公司需要多少钱 互联网科技和信息 互联网公司黑科技创始人 中和天地互联网科技有限公司 互联网对科技影响 山东亿川互联网科技有限责任公司 西安纸贵互联网科技有限公司 互联网科技集团 以房互联网科技 华中科技大学互联网 上游互联网科技 港股科技和互联网 湖北码尼互联网科技有限公司电话 速维有品互联网信息科技(苏州)有限公司 用友工业互联网科技发展 安徽九吞吴互联网科技有限公司
0