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

2025-05-29 0 24

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

Hibernate是一个轻量级的ORMapping对象。主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获取的方法,

可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间,解放编程人员95%的任务。

2.什么是ORM Object-Relational-Mapping对象关系映射

ORM:是通过java对象映射到数据库表,通过操作Java对象可以完成对数据表的操作。(假如你用的是Dbutils那么还需要在Java类中写sql语句,而orm就不用)

Hibernate是一个完全的ORM框架只需要对对象的操作即可生成底层的SQL。

接下来直接进入主题:

先看看使用hibernate的基本流程!下面是简单的流程图

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

1.创建项目:

用myeclipse创建一个web project

2.导入hibernate相关的架包到项目

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

第三步: 配置hibernate

在src目录下新建一个xml文件,名称为hibernate.cfg.xml(当然,你也可以不叫这个名称,不过在代码中要作相应的修改),拷贝如下内容:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34
<?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是要你手动创建的

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

?

1

2

3

4

5

6

7

8

9

10

11
public class Customer {

private int id;

private String name;

private int age;

private String city;

private String addr;

}

/*

* 提供set和get方法

*/

Customer 实体

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42
<?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对象进行相关操作

第五步和第六步我和在一起,第六步我们发现不论增删改查前面四步都是一样的,我们其实可以提取到一个工具类,再来调用这样加快效率。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持快网idc!

原文链接:http://www.cnblogs.com/qdhxhz/p/6478317.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Hibernate中实现增删改查的步骤详解 https://www.kuaiidc.com/118475.html

相关文章

发表评论
暂无评论