本文共 3261 字,大约阅读时间需要 10 分钟。
持久化是Hibernate的核心概念,主要解决了关系型数据库与对象的不匹配问题。简单来说,持久化就是将对象的状态持久化到数据库中,保证数据不会丢失。
在Hibernate中,数据是通过Session从数据库加载到内存中的。Session可以看作是对数据库连接的包装,负责事务管理和缓存。
Hibernate是一种ORM框架,通过将POJO与数据库表映射起来,解决了传统 JDBC 在数据库操作中存在的阻抗不匹配问题。其优势主要体现在:
Hibernate项目通常包含以下几个目录:
创建一个简单的用户表:
CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `pwd` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
package com.demo.pojo;public class User { private Long id; private String name; private String pwd; // setter和getter方法 // ...}
package com.demo.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.jupiter.api.Test;import com.demo.pojo.User;public class QueryTest { @Test public void connectTest() { // 配置ServiceRegistry并创建SessionFactory StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory(); Session session = sessionFactory.openSession(); // 开始事务 Transaction transaction = session.beginTransaction(); // 保存用户 User user = new User(); user.setName("张三"); user.setPwd("123456"); session.save(user); // 提交事务 transaction.commit(); // 关闭Session session.close(); } @Test public void queryTest() { // 获取具体的用户 User user = session.get(User.class, 8L); System.out.println(user); // 提交事务 transaction.commit(); // 关闭Session session.close(); } @Test public void saveTest() { // 同connectTest的逻辑,省略重复代码 }}
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/hibernate_test json 123456 org.hibernate.dialect.MySQL5Dialect true true update
通过以上配置和实践,熟悉了Hibernate的基本使用方法和配置方式,可以为后续的开发工作打下坚实基础。
转载地址:http://xyqfk.baihongyu.com/