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 完成用户数据的增删改查
- 配置Hibernate环境;
- 建立一个用户表(user);
- 创建一个用户实体类(User);
- 创建一个DAO层(UserDao),实现CRUD方法;
- 创建一个Service层(UserService),并注入UserDao;
- 编写Action层(UserAction),并注入UserService,完成用户数据的增删改查。
示例2:使用 Hibernate 完成带有多表关联的数据查询
- 配置Hibernate环境;
- 建立两张表(user和role),并建立多表关联;
- 创建两个实体类(User和Role),并在实体类中描述多表关联;
- 创建两个DAO层(UserDao和RoleDao),实现CRUD方法;
- 创建一个Service层(UserRoleService),并注入UserDao和RoleDao;
- 编写Action层(UserRoleAction),并注入UserRoleService,完成多表关联数据查询。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb Hibernate使用全面介绍 - Python技术站