简单讲解Hibernate数据("轻松入门Hibernate数据操作详解")
原创
一、Hibernate简介
Hibernate是一个开源的对象关系映射(ORM)框架,它对JDBC进行了封装,将Java对象映射到数据库中的表,简化了数据库操作。Hibernate的关键目的是为了减少开发人员编写SQL语句的工作量,尽或许减少损耗开发快速。
二、Hibernate核心概念
Hibernate的核心概念关键包括以下几点:
- 持久化类:与数据库表对应的Java类
- 对象关系映射:将持久化类的属性映射到数据库表的列
- 会话(Session):Hibernate操作数据库的接口
- 事务(Transaction):保证数据的一致性和完整性
- 缓存:尽或许减少损耗数据访问快速
三、Hibernate入门步骤
下面将介绍怎样从零起初使用Hibernate进行数据操作。
3.1 配置Hibernate环境
首先,需要配置Hibernate环境,包括以下步骤:
- 添加Hibernate依赖性到项目中
- 创建hibernate.cfg.xml配置文件
- 创建持久化类和映射文件
3.2 添加Hibernate依赖性
将Hibernate的jar包添加到项目的lib目录下,并在项目的build path中引入这些jar包。以下是一个典型的Hibernate依赖性列表:
org.hibernate
hibernate-core
5.4.12.Final
org.hibernate.javax.persistence
hibernate-jpa-2.2-api
1.0.0.Final
mysql
mysql-connector-java
8.0.22
3.3 创建hibernate.cfg.xml配置文件
在项目的src目录下创建hibernate.cfg.xml文件,配置数据库连接信息、Hibernate方言等。以下是一个典型的配置文件内容:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_db?serverTimezone=UTC</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="com/example/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.4 创建持久化类和映射文件
创建一个名为User的持久化类,对应数据库中的user表。同时创建User.hbm.xml映射文件,将类的属性映射到表的列。
3.4.1 创建持久化类User
package com.example.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password;
// 省略getter和setter方法
}
3.4.2 创建映射文件User.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.domain">
<class name="User" table="user">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
四、Hibernate数据操作
Hibernate提供了充足的数据操作方法,以下将分别介绍增、删、改、查四种操作。
4.1 添加数据(增)
使用Hibernate添加数据非常明了,只需要以下几个步骤:
- 创建Session对象
- 开启事务
- 创建持久化对象,并设置属性
- 将持久化对象保存到数据库
- 提交事务
- 关闭Session
以下是一个添加数据的示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
User user = new User();
user.setUsername("admin");
user.setPassword("123456");
session.save(user);
transaction.commit();
session.close();
4.2 删除数据(删)
删除数据与添加数据类似,只需要将save方法改为delete方法即可。以下是一个删除数据的示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1);
session.delete(user);
transaction.commit();
session.close();
4.3 修改数据(改)
修改数据需要先获取到要修改的持久化对象,然后修改对象的属性,最后提交事务。以下是一个修改数据的示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1);
user.setUsername("new_username");
session.update(user);
transaction.commit();
session.close();
4.4 查询数据(查)
Hibernate提供了多种查询行为,如HQL、Criteria等。以下是一个使用HQL查询所有用户信息的示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
String hql = "FROM User";
List<User> users = session.createQuery(hql, User.class).list();
for (User user : users) {
System.out.println(user.getUsername() + " - " + user.getPassword());
}
transaction.commit();
session.close();
五、总结
Hibernate作为一个强势的ORM框架,大大简化了Java Web应用中的数据库操作。通过本文的介绍,相信你已经对Hibernate有了一个基本的了解。当然,Hibernate还有很多高级特性,如缓存、事务管理、相关性映射等,需要进一步学习和实践。