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日

相关文章

  • 详解Spring Security如何在权限中使用通配符

    要在Spring Security中使用通配符进行权限管理,需要结合使用Ant风格的路径匹配模式和正则表达式。 首先,在WebSecurityConfigurerAdapter的configure(HttpSecurity http)方法中,我们可以使用Ant风格的路径匹配模式进行权限配置,例如: http.authorizeRequests() .antM…

    Java 2023年5月20日
    00
  • 详解Java的JDBC API中事务的提交和回滚

    下面是详解Java的JDBC API中事务的提交和回滚的攻略: 1. 事务基本概念 在数据库操作中,事务是指一系列的数据库操作,这些操作要么全部执行成功,要么全部失败。事务操作具有原子性、一致性、隔离性和持久性四个特征,简称ACID(Atomicity、Consistency、Isolation、Durability)。其中: 原子性:指事务中的所有操作要么…

    Java 2023年5月20日
    00
  • Java函数式编程(六):Optional

    Java函数式编程(六):Optional Optional简介 在Java 8中,Optional成为了一个非常重要的新特性。Optional是一个容器类型,代表一个值存在或不存在。Original Java中,我们经常返回null来表示一个空值。但是在Java 8 中使用Optional来表示一个值不存在更加明确和安全。 Optional 类(java.…

    Java 2023年5月26日
    00
  • 详解Springboot配置文件的使用

    下面是“详解Springboot配置文件的使用”的完整攻略。 什么是Springboot配置文件? Springboot的配置文件是一个以properties或yml为扩展名的文件,用于配置Springboot应用程序的参数。 在Springboot中,我们可以通过配置文件来轻松地配置应用程序的各种参数,例如:端口号、数据源、日志、邮件等等。 配置文件的使用…

    Java 2023年5月15日
    00
  • Java多线程–让主线程等待所有子线程执行完毕在执行

    如果想在Java中实现主线程等待所有子线程执行完毕再执行,可以使用以下步骤: 1. 定义多个子线程 定义具体的子线程类,重写run方法实现具体的任务逻辑。以下是一个简单的示例: class MyThread implements Runnable { private String name; public MyThread(String name) { th…

    Java 2023年5月19日
    00
  • 详解Java实现简单SPI流程

    下面是“详解Java实现简单SPI流程”的完整攻略。 什么是SPI? SPI的全称是Service Provider Interface,即服务提供者接口。在Java中,它是一种用于实现服务发现机制的标准。SPI的基本思想是,通过在Classpath路径下的META-INF/services目录下,提供一些接口对应的文件,文件内容为接口的实现类的全限定名。J…

    Java 2023年5月19日
    00
  • java 中maven pom.xml文件教程详解

    我来详细讲解一下“Java 中 Maven pom.xml 文件教程详解”的攻略。 1. Maven 简介 Apache Maven 是一个 Java 项目管理工具,可以帮助我们管理项目的构建、依赖关系、文档生成、发布等等。它基于项目对象模型(POM)进行构建,并预定义了一些标准生命周期阶段和目标(Goal)。 Maven 使用强制约定的目录结构来组织项目文…

    Java 2023年5月20日
    00
  • 配置Web应用环境实现JSP留言簿

    下面给出配置Web应用环境实现JSP留言簿的完整攻略。 环境准备 在进行Web应用环境配置之前,需要先准备好以下环境: 安装Java开发环境(JDK) 安装Tomcat服务器 安装一个Java IDE(Eclipse、IntelliJ等) 创建Web应用项目 首先,需要在Java IDE中创建一个Web应用项目。以Eclipse为例,创建步骤如下: 打开Ec…

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