全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Hibernate中实现增删改查的步骤详解

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 实现通用的增删改查基础类方法  # 加载  # 类中  # 是一个  # 主键  # 第六步  # 自己的  # 的是  # 第五步  # 连接池  # 你可以  # 第一个  # 那就  # 我和  # 当你  # 只需  # 要在  # 再来  # 可以直接  # 要知道  # 杭州 


相关文章: 开源网站制作软件,开源网站什么意思?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  MySQL查询结果复制到新表的方法(更新、插入)  如何在IIS管理器中快速创建并配置网站?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  ,交易猫的商品怎么发布到网站上去?  Bpmn 2.0的XML文件怎么画流程图  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  如何基于PHP生成高效IDC网络公司建站源码?  大连 网站制作,大连天途有线官网?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在腾讯云免费申请建站?  如何选择高效稳定的ISP建站解决方案?  行程制作网站有哪些,第三方机票电子行程单怎么开?  教学网站制作软件,学习*后期制作的网站有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  怀化网站制作公司,怀化新生儿上户网上办理流程?  建站之星后台密码遗忘或太弱?如何重置与强化?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  建站主机选哪种环境更利于SEO优化?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  智能起名网站制作软件有哪些,制作logo的软件?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  已有域名和空间如何快速搭建网站?  如何用PHP快速搭建高效网站?分步指南  香港服务器选型指南:免备案配置与高效建站方案解析  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  建站之星价格显示格式升级,你的预算足够吗?  详解jQuery中基本的动画方法  建站VPS配置与SEO优化指南:关键词排名提升策略  建站之星如何配置系统实现高效建站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  潮流网站制作头像软件下载,适合母子的网名有哪些?  红河网站制作公司,红河事业单位身份证如何上传?  存储型VPS适合搭建中小型网站吗?  建站之星免费版是否永久可用?  制作电商网页,电商供应链怎么做?  已有域名和空间,如何快速搭建网站?  网站制作公司,橙子建站是合法的吗?  广州建站公司哪家好?十大优质服务商推荐  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何配置FTP站点权限与安全设置?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  七夕网站制作视频,七夕大促活动怎么报名?  高端建站三要素:定制模板、企业官网与响应式设计优化  大型企业网站制作流程,做网站需要注册公司吗?  如何用花生壳三步快速搭建专属网站?  建站之星安装需要哪些步骤及注意事项?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  建站之星导航配置指南:自助建站与SEO优化全解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。