1.首先我们要知道什么是Hibernate

Hibernate是一个轻量级的ORMapping对象。主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获取的方法,
可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间,解放编程人员95%的任务。
2.什么是ORM Object-Relational-Mapping对象关系映射
ORM:是通过java对象映射到数据库表,通过操作Java对象可以完成对数据表的操作。(假如你用的是Dbutils那么还需要在Java类中写sql语句,而orm就不用)
Hibernate是一个完全的ORM框架只需要对对象的操作即可生成底层的SQL。
接下来直接进入主题:
先看看使用hibernate的基本流程!下面是简单的流程图
1.创建项目:
用myeclipse创建一个web project
2.导入hibernate相关的架包到项目
第三步: 配置hibernate
在src目录下新建一个xml文件,名称为hibernate.cfg.xml(当然,你也可以不叫这个名称,不过在代码中要作相应的修改),拷贝如下内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <!-- 配置会话工厂 hibernate 核心 管理数据库连接池 --> <session-factory> <!-- 1.配置数据库连接参数 --> <!-- 1.1配置jdbc四个基本连接参数 --> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernateexec</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 1.2配置 hibernate使用的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 2.配置其他相关属性 --> <!-- 2.1自动建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 2.2在日志中输出sql --> <property name="hibernate.show_sql">true</property> <!-- 2.3格式化sql --> <property name="hibernate.format_sql">true</property> <!-- 开启事务 --> <property name="hibernate.connection.autocommit">true</property> <!-- 配置c3p0数据库连接池 --> <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="hibernate.c3p0.min_size">5</property> <property name="hibernate.c3p0.max_size">50</property> <property name="hibernate.c3p0.timeout">120</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 3.加载映射文件 --> <mapping resource="com/study/model/Customer.hbm.xml"/> </session-factory> </hibernate-configuration>
这里提醒一点:customer表你可以不用去手动创建,但是数据库hibernateexec是要你手动创建的
第四步.创建实体和映射文件
public class Customer {
private int id;
private String name;
private int age;
private String city;
private String addr;
}
/*
* 提供set和get方法
*/
Customer 实体
映射文件和实体对象在同一个包下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 完成实体类 和数据表的映射 --> <!-- 1.类与表的映射 --> <!-- name 要映射的完整类名 table 映射到数据库的表名 catalog 映射到数据库的名字 --> <class name="com.study.model.Customer" table="customer" catalog="hibernateexec"> <!-- 2.类中属性 和表中 数据列的映射 --> <!-- 2.1主键 --> <!-- name 属性名(类中) column 列名(表中) type 数据类型 --> <id name="id" column="id" type="int"> <!-- 配置主键生成策略 主键自动增长--> <generator class="identity"></generator> </id> <!-- 2.2 普通属性 --> <!-- name 属性名(类中) column 列名(表中) type 数据类型(也可以直接写String) --> <property name="name" column="name" type="java.lang.String"></property> <property name="age" column="age" type="int"></property> <!-- 也可以分开写 --> <property name="city"> <column name="city" sql-type="varchar(20)"></column> </property> <!-- 如果什么都不写,那就默认类的属性名和数据库中的列名一致都为addr,类型为varchar --> <property name="addr"></property> </class> </hibernate-mapping> Customer.hbm.xml
第五步:创建SessionFactory对象
第六步:获取Session对象进行相关操作
第五步和第六步我和在一起,第六步我们发现不论增删改查前面四步都是一样的,我们其实可以提取到一个工具类,再来调用这样加快效率。
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.study.model.Customer;
public class HibernateTest {
/*
* 保存数据
*/
@Test
public void testInsert() {
// 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 创建会话
Session session = sessionFactory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 编写自己的逻辑代码
Customer customer = new Customer();
customer.setName("小黄");
customer.setAge(40);
customer.setCity("北京");
// 直接保存
session.save(customer);
// 提交事务
transaction.commit();
session.close();
sessionFactory.close();
}
//查询所有的
@Test
public void testFindAllByHQL(){
// 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 创建会话
Session session = sessionFactory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
//编写HQL语句(面向类和属性的查询
String hql =" from Customer";//这里是Customer不是表名 是类名 查询Customer
Query query =session.createQuery(hql);
List<Customer> customers=query.list();
System.out.println(customers);
// 提交事务
transaction.commit();
session.close();
sessionFactory.close();
}
// 删除
@Test
public void testDelete() {
// 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 创建会话
Session session = sessionFactory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
Customer customer =new Customer();
customer.setId(2);
session.delete(customer);
// 提交事务
transaction.commit();
session.close();
sessionFactory.close();
}
// 修改
@Test
public void testUpdate() {
// 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 创建会话
Session session = sessionFactory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
Customer customer = (Customer) session.get(Customer.class, 2);
customer.setCity("杭州");
session.update(customer);
// 提交事务
transaction.commit();
session.close();
sessionFactory.close();
}
// 查询 根据id查询
@Test
public void testFindById() {
// 实例化配置对象 加载映射文件 加载 hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 创建会话工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 创建会话
Session session = sessionFactory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
Customer customer = (Customer) session.get(Customer.class, 1);
System.out.println(customer);
// 提交事务
transaction.commit();
session.close();
sessionFactory.close();
}
}
运行效果:当你运行第一个增加用户的时候,运行结束数据库会自动创建customer表格,和往表格里添加数据。
这样就通过hibernate进行基础的增删改查了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# hibernate增删改查
# 详解通过JDBC进行简单的增删改查(以MySQL为例)
# JDBC增删改查和查唯一的完整代码解析
# java jdbc连接mysql数据库实现增删改查操作
# java操作mysql实现增删改查的方法
# JDBC 实现通用的增删改查基础类方法
# 加载
# 类中
# 是一个
# 主键
# 第六步
# 自己的
# 的是
# 第五步
# 连接池
# 你可以
# 第一个
# 那就
# 我和
# 当你
# 只需
# 要在
# 再来
# 可以直接
# 要知道
# 杭州
相关文章:
导航网站建站方案与优化指南:一站式高效搭建技巧解析
网站制作服务平台,有什么网站可以发布本地服务信息?
如何通过.red域名打造高辨识度品牌网站?
制作电商网页,电商供应链怎么做?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
存储型VPS适合搭建中小型网站吗?
制作销售网站教学视频,销售网站有哪些?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
设计网站制作公司有哪些,制作网页教程?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
如何选择高效可靠的多用户建站源码资源?
javascript基本数据类型及类型检测常用方法小结
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何选择建站程序?包含哪些必备功能与类型?
如何在万网自助建站中设置域名及备案?
如何在IIS中新建站点并解决端口绑定冲突?
建站之星北京办公室:智能建站系统与小程序生成方案解析
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何快速搭建FTP站点实现文件共享?
如何选择网络建站服务器?高效建站必看指南
制作旅游网站html,怎样注册旅游网站?
Python多线程使用规范_线程安全解析【教程】
网站制作免费,什么网站能看正片电影?
建站之星会员如何解锁更多建站功能?
如何用好域名打造高点击率的自主建站?
详解jQuery中基本的动画方法
C#怎么使用委托和事件 C# delegate与event编程方法
php json中文编码为null的解决办法
如何在Golang中引入测试模块_Golang测试包导入与使用实践
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
建站之星代理费用多少?最新价格详情介绍
实现点击下箭头变上箭头来回切换的两种方法【推荐】
建站之星安装提示数据库无法连接如何解决?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何自定义建站之星网站的导航菜单样式?
免费网站制作appp,免费制作app哪个平台好?
如何在Windows环境下新建FTP站点并设置权限?
已有域名如何快速搭建专属网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何快速查询域名建站关键信息?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何快速搭建高效服务器建站系统?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
如何快速辨别茅台真假?关键步骤解析
建站主机与虚拟主机有何区别?如何选择最优方案?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
济南网站制作的价格,历城一职专官方网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
*请认真填写需求信息,我们会在24小时内与您取得联系。