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

网友投稿 260 2023-06-07


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(当然,你也可以不叫这个名称,不过在代码中要作相应的修改),拷贝如下内容:

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">

root

root

jdbc:mysql:///hibernateexec

com.mysql.jdbc.Driver

org.hibernate.dialect.MySQLDialect

update

true

true

true

org.hibernate.connection.C3P0ConnectionProvider

5

50

120

3000

这里提醒一点:customer表你可以不用去手动创建,但是数据库hibernateexec是要你手动创建的

第四步.创建实体和映射文件

public class Customer {

private int id;

private String name;

private int age;

private String city;

private String addr;

}

/*

* 提供set和get方法

*/

Customer 实体

映射文件和实体对象在同一个包下:

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd">

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语句(面向类和属性的查询

StrinyYjRntg hql =" from Customer";//这里是Customer不是表名 是类名 查询Customer

Query query =session.createQuery(hql);

List 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进行基础的增删改查了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
下一篇:Springboot使用POI实现导出Excel文件示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~