您现在的位置是:亿华云 > IT科技

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

亿华云2025-10-03 11:52:24【IT科技】6人已围观

简介前言ORM框架不是一个新话题,它已经伴随我们很多年了。它提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立了很好的映射关系。在Java中常用的ORM框架主要有两个:Hibernate

 前言

ORM框架不是技术一个新话题,它已经伴随我们很多年了。清楚它提供了概念性的敢说、易于理解的自己数据模型,将数据库中的框架表和内存中的对象建立了很好的映射关系。在Java中常用的技术ORM框架主要有两个:Hibernate和iBatis。本篇文章主要介绍Hibernate的清楚使用方法,后续会出介绍iBatis的敢说文章。

传统的自己MVC开发模式

❝M:Model包括pojo、service、框架dao。技术 V:View 包括jsp、清楚html、敢说模块引擎。自己 C:Controll 包括我们动态网络资源的框架技术:Servlet。❞

SSH框架在开发中的作用

❝S:Struts/SpringMVC: 实际上解决的是我们的控制器的问题(简单的可以认为是Servlet的网站模板封装)。 Spring: 整合其余的第三方框架,就是为 Srvice 层提供事务。 Hibernate:其实就是DAO层的解决方案。❞

同时可以看下其余框架(SSM、SSS)的含义:

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配置文件

 <?xml version=1.0 encoding=utf-8?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>     <session-factory>         <!--驱动程序-->         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>         <!--访问的URL-->         <property name="hibernate.connection.url">jdbc:mysql:///qianyu</property>         <!--用户名-->         <property name="hibernate.connection.username">root</property>         <!--密码-->         <property name="hibernate.connection.password">root</property>         <!--方言 表示的是告诉Hibernate框架当前 你要生成那个数据库下的SQL语句-->         <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>         <!--是否自动创建表  create:表示的是每一次 都从新创建  update:表示的是 如果有就不创建 没有就创建-->         <property name="hibernate.hbm2ddl.auto">update</property>         <!--配置映射文件-->         <mapping resource="com/qy/helloworld/User.hbm.xml"/>     </session-factory> </hibernate-configuration> 

创建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配置文件的详解

<?xml version=1.0 encoding=utf-8?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>     <!--配置我们数据库的连接信息的-->     <session-factory>         <!--驱动程序-->         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>         <!--访问的URL-->         <property name="connection.url">jdbc:mysql:///qianyu</property>         <!--用户名-->         <property name="connection.username">root</property>         <!--密码-->         <property name="connection.password">root</property>         <!--方言 表示的是告诉Hibernate框架当前 你要生成那个数据库下的SQL语句-->         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>         <!--是否自动创建表  create:表示的服务器托管是每一次 都从新创建  update:表示的是 如果有就不创建 没有就创建-->         <!--create经常用在测试的环境中-->         <property name="hbm2ddl.auto">update</property>         <!--执行的时候将SQL语句展示出来-->         <property name="show_sql">true</property>         <!--格式化这个SQL语句-->         <property name="format_sql">true</property>         <!--配置映射文件  配置的是映射文件的-->        <mapping resource="com/qy/helloworld/User.hbm.xml"/>         <!--使用注解的时候使用的是这一个-->        <!--  <mapping package="com.qy.helloworld"/> -->     </session-factory> </hibernate-configuration> 

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

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!--package:一般情况下要进行配置  可以不配置 但是 下面你就要写全路径  auto-import="true":如果不配置的话那么在进行查询的时候必须写类的全路径--> <!--default-lazy:配置整个实体是否支持懒加载  默认就支持懒加载--> <hibernate-mapping package="com.qy.helloworld" default-lazy="true" auto-import="true">     <!--下面配置的是映射关系   将JAVA对象 直接映射到数据库的表里面去          name:表示的是类的名字          table:表示的是当前的这个JAVA类 对应的数据库中的表的名字做是什么 这个名字是可以随便写的 但是一般要见名之意          lazy:当前这个类在进行查询操作的时候  要进行懒加载     -->  <class name="User" table="t_user"  lazy="true">      <!--          id:表示的是主键的映射          name:类中主键的名字          column:主键对应的表的字段          length:确定当前字段的最大长度          type:类型(写的是JAVA中数据类型的全路径)                   注意:类型可以省略:省略之后的类型就和实体中的类型保持一致               length:可以省略  默认就是int的最大范围                 column:这个也可以省略省略之后 默认和类中保持一致        -->   <id name="uId">       <!--主键自增长                    上面的重点记住           identity:自增长这个表示的意思是:会根据底层的数据库选择自增长的策略           assigned:自己设置这个id的值           foreign:这个表示的是要将别人的主键来作为自己的主键           uuid:通过uuid来生成id主键                    下面的了解           increment:递增(这个跟数据库是有关系的)           native:是递增(跟底层的数据库的方言有关)           sequence:这个表示的是通过表的序列来完成下一个id的生成(Oracle数据库)       -->    <generator class="identity"/>   </id>   <!--下面映射的是普通的属性        length:字符串的长度        not-null:当前字段不能为空        type:类型   -->   <property name="userName" column="userName" length="20" not-null="true"/>   <property name="userPwd" length="20" not-null="true" type="java.lang.String"/>    </class> </hibernate-mapping> 

很赞哦!(3629)