Hibernate 浅析

3 篇文章 0 订阅
2 篇文章 0 订阅

什么是Hibernate?

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。

简单来说Hibernate就是主流 ORM 框架 (Object Relation Mapping 对象关系映射 ),将⾯向对象映射成⾯向关系。

如何使用

1、导⼊相关依赖
2、创建 Hibernate 配置⽂件
3、创建实体类
4、创建实体类-关系映射⽂件
5、调⽤ Hibernate API 完成操作

具体操作

1、创建 Maven ⼯程,pom.xml

<dependencies>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.10.Final</version>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>

</dependencies>

2、创建 Hibernate 配置⽂件 hibernate.cfg.xml

核⼼配置:session-factory

SessionFactory:针对单个数据库映射经过编译的内存镜像⽂件,将数据库转换为⼀个 Java 可以识别的镜像⽂件。

注意:构建 SessionFactory ⾮常耗费资源,所以通常⼀个⼯程只需要创建⼀个 SessionFactory。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据源配置 -->
<property name="connection.username">“名字”</property>
<property name="connection.password">“密码”</property>
<property
name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?
useUnicode=true&amp;characterEncoding=UTF-8</property>

<!-- C3P0 -->

<!-- 线程不够时再开辟的线程数 -->
<property name="hibernate.c3p0.acquire_increment">10</property>
<!-- 释放资源时间也就是失效时间 -->
<property name="hibernate.c3p0.idle_test_period">10000</property>
<!-- 超时时间 -->
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_statements">10</property>

<!-- 数据库⽅⾔ -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- 打印SQL -->
<property name="show_sql">true</property>

<!-- 格式化SQL -->
<property name="format_sql">true</property>

<!-- 是否⾃动⽣成数据库 -->
<property name="hibernate.hbm2ddl.auto">create</property>

</session-factory>
</hibernate-configuration>

3、创建实体类

@Data
public class User {
private Integer id;
private String name;
private Double money;
}

4、创建实体关系映射⽂件 User.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

<class name="com.chen.entity.User" table="user">

<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="identity"></generator>
</id>

<property name="name" type="java.lang.String">
<column name="name"></column>
</property>

<property name="money" type="java.lang.Double">
<column name="money"></column>
</property>

</class>
</hibernate-mapping>

5、实体关系映射⽂件注册到 Hibernate 的配置⽂件中。

<!-- 注册实体关系映射⽂件 -->
<mapping resource="com/chen/entity/User.hbm.xml"></mapping>

6、使⽤ Hibernate API 完成数据操作。

public class Test {
public static void main(String[] args) {
//创建Configuration
Configuration configuration = new
Configuration().configure("hibernate.cfg.xml");

//获取SessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();

//获取Session
Session session = sessionFactory.openSession();
People people = new People();
people.setName("张三");
people.setMoney(1000.0);

session.save(people);
session.beginTransaction().commit();
session.close();
}
}

7、如果实体类-关系映射⽂件放在src目录下,还需要pom.xml 中需要配置 resource才能识别。

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值