JavaWeb Hibernate使用全面介绍

JavaWeb Hibernate使用全面介绍

什么是Hibernate

Hibernate 是一个开源的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,它将 POJO 与数据库表建立映射关系,是一个全自动的 ORM 框架。

Hibernate的优势

  • 具有很好的对象关系映射功能,减少了数据访问层的编码工作量;
  • 支持普通的 SQL 查询,无需操心数据库的具体类型;
  • 对数据库有非常好的适配性,可与任何一个关系型数据库配合使用;
  • 可以缓存常用的 SQL 语句,提高查询效率;
  • 简化了数据操作的编程模型,让开发者更专注于业务逻辑的实现。

Hibernate的环境搭建

  • 下载Hibernate相应的版本,建议使用Maven进行依赖管理;
  • 在pom.xml文件中添加Hibernate相关的依赖;
  • 新建Hibernate的配置文件hibernate.cfg.xml,配置Hibernate的基本信息和连接数据库的相关信息。

Hibernate的使用

配置Hibernate的SessionFactory对象

SessionFactory 是 Hibernate 的核心接口,通过它可以获取 Session 对象。SessionFactory 对象的配置代码如下:

// 加载Hibernate配置文件,获取Session工厂对象
Configuration configuration = new Configuration().configure();

// 方式1:创建默认会话工厂对象(一次构建多个 Session)
SessionFactory sessionFactory = configuration.buildSessionFactory();

// 方式2:创建会话工厂构造方法 (每次创建一个 Session,需建立关闭 SessionFactory)
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

配置Hibernate的映射文件

映射文件用于描述实体类与数据表之间的映射关系。Hibernate提供了两种方式来生成映射文件:

  • 使用自动生成工具 hbm2ddl,根据 Java 实体类自动生成映射文件;
  • 手动创建映射文件。

映射文件示例:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC  
    "-//Hibernate/Hibernate Mapping DTD//EN"  
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">  

<!-- Employee.hbm.xml -->  
<hibernate-mapping>  
  <class name="com.Employee" table="EMPLOYEE">  
    <meta attribute="class-description">This class contains the employee detail.</meta>  
    <id name="id" type="int" column="id">  
      <generator class="native"/>  
    </id>  
    <property name="firstName" column="first_name" type="string"/>  
    <property name="lastName" column="last_name" type="string"/>  
    <property name="salary" column="salary" type="int"/>  
  </class>  
</hibernate-mapping>

进行Hibernate实体操作

Hibernate 的操作都是通过Session进行的。例如,将一个实体对象持久化到数据库中,代码如下:

Session session = sessionFactory.openSession(); // 通过 SessionFactory 来获取 Session
Transaction transaction = session.beginTransaction(); // 开启事务
Employee employee = new Employee();
employee.setId(1);
employee.setFirstName("John");
employee.setLastName("Doe");
employee.setSalary(10000);
session.save(employee); // 将数据保存到数据库中
transaction.commit(); // 提交事务
session.close(); // 关闭Session

示例说明

示例1:使用 Hibernate 完成用户数据的增删改查

  1. 配置Hibernate环境;
  2. 建立一个用户表(user);
  3. 创建一个用户实体类(User);
  4. 创建一个DAO层(UserDao),实现CRUD方法;
  5. 创建一个Service层(UserService),并注入UserDao;
  6. 编写Action层(UserAction),并注入UserService,完成用户数据的增删改查。

示例2:使用 Hibernate 完成带有多表关联的数据查询

  1. 配置Hibernate环境;
  2. 建立两张表(user和role),并建立多表关联;
  3. 创建两个实体类(User和Role),并在实体类中描述多表关联;
  4. 创建两个DAO层(UserDao和RoleDao),实现CRUD方法;
  5. 创建一个Service层(UserRoleService),并注入UserDao和RoleDao;
  6. 编写Action层(UserRoleAction),并注入UserRoleService,完成多表关联数据查询。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb Hibernate使用全面介绍 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • JavaScript中浅讲ajax图文详解

    JavaScript中浅讲ajax图文详解 1. 什么是ajax AJAX 的全名是“异步 JavaScript 和 XML”。它是一种用于创建快速动态网页的编程技术。简单来说,它可以使网页通过后台与服务器通信并交换数据,而不需要重新加载整个页面。这就意味着,通过 AJAX,页面可以在不刷新的情况下更新部分内容,这尤其对于 Web 应用程序非常实用。 2. …

    Java 2023年5月23日
    00
  • java 中数据库连接的JDBC和驱动程序的深入分析

    那我来为您详细讲解Java中数据库连接的JDBC和驱动程序的深入分析。 JDBC简介 Java Database Connectivity (JDBC) 是一种Java API,用于与数据库进行连接、传输数据和操作数据。在Java应用程序中,可以使用JDBC API与各种关系型数据库进行交互,如MySQL、PostgreSQL、Oracle等。 JDBC驱动…

    Java 2023年5月19日
    00
  • Java泛型机制的程序演示详解

    Java泛型机制的程序演示详解 什么是Java泛型? Java泛型是JDK1.5版本中引入的新特性。它的主要目的是用来规范和简化Java中的类型变量的使用。 在Java泛型出现之前,Java中的类或者方法的参数或者返回值只能使用具体的类型,比如String、Integer等。而Java泛型则提供了一种灵活的方式,可以在定义类或者方法时,以一个类型变量作为参数…

    Java 2023年5月30日
    00
  • Json字符串与Object、List、Map的互转工具类

    介绍:在Java中,经常会使用Json格式的字符串来传输数据,但是在Java程序内部我们又需要把Json字符串转换为Java对象来方便的操作数据。本文将介绍如何使用Json相关的工具类将Json字符串转换为Java对象,并将Java对象转换为Json格式的字符串。 将Json字符串转换为Java对象 当我们有一个Json格式的字符串需要转换为Java对象时,…

    Java 2023年5月26日
    00
  • jsp的九大内置对象深入讲解

    一、JSP九大内置对象 JSP的九大内置对象是指:1. request:封装客户端的请求,其中包含了与HTTP请求相关的信息,例如:请求参数、头信息等;2. response:封装服务器对客户端的响应,其中包含了HTTP响应本身以及向客户端发送的数据;3. pageContext:JSP页面上下文,包含了对该JSP页面的Servlet上下文、请求、响应等对象…

    Java 2023年6月15日
    00
  • SpringBoot项目打包war包时无法运行问题的解决方式

    如果在将SpringBoot项目打包成war包后无法正常运行,有以下两种解决方式: 1. 修改WebApplicationType属性 在SpringBoot 2.0.X之后的版本中,默认的WebApplicationType属性是SERVLET,生成的是一个标准的Servlet容器WAR包。但是如果将SpringBoot项目打包成WAR包后在tomcat等…

    Java 2023年6月3日
    00
  • IDEA项目的依赖(pom.xml文件)导入问题及解决

    下面是详细讲解 IDEA 项目的依赖(pom.xml 文件)导入问题及解决的完整攻略。 一、什么是 pom.xml 文件 pom(Project Object Model)文件是 Maven 中的一个核心概念,也是 Java 项目管理中的重要组成部分。pom.xml 文件主要用来描述 Maven 项目的基本信息、构建信息、依赖信息。 通常情况下,我们在使用 …

    Java 2023年5月20日
    00
  • SpringBoot整合JPA数据源方法及配置解析

    下面就来详细讲解SpringBoot整合JPA数据源方法及配置解析。 一、什么是JPA JPA(Java Persistence API)是Java持久化规范,是EJB 3.0规范的一部分,旨在为Java开发人员提供一个数据库无关的对象/关系映射标准,以便管理Java应用程序中的持久化数据。在JPA中,我们通过实体类来操作数据库,不再需要手写增删改查的SQL…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部