Java学习之Hibernate框架使用

Java学习之Hibernate框架使用0x00前言以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个简单记录。0x01使用流程

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java学习之Hibernate框架使用

0x00 前言

以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个 简单记录。

0x01 使用流程

流程

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

具体操作

<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>
  1. 配置hibernate.cfg.xml 文件
<?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">root</property>
<property name="connection.password">root</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"></property>
</session-factory>
</hibernate-configuration>

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

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

  1. 创建实体类
import lombok.Data;
import java.util.Set;
@Data
public class Customer {
private Integer id;
private String name;
private Set<Orders> orders;
}
import lombok.Data;
@Data
public class Orders {
private Integer id;
private String name;
private Customer customer;
}
  1. 创建实体关系映射⽂件
import lombok.Data;
@Data
public class People {
private Integer id;
private String name;
private Double money;
}
<?xml version="1.0"?>5、实体关系映射⽂件注册到 Hibernate 的配置⽂件中。
6、使⽤ Hibernate API 完成数据操作。
<!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.southwind.entity.People" table="people">
<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>
  1. 实体关系映射⽂件注册到 Hibernate 的配置⽂件中。
<mapping resource="com/nice0e3/entity/People.hbm.xml"></mapping>
  1. 使⽤ Hibernate API 完成数据操作
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args) {
//创建Configuration
Configuration configuration = new
Configuration().configure("hibernate.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();
}
}

配置到映射文件配置到src目录下会读取不到。想要读取到需要在pom.xml下进行配置。

  1. pom.xml 中需要配置 resource。
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>

0x02 结尾

Hibernate并不是本次主要目的,这里用于做简单记录。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119872.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm激活码永久(注册激活)

    (pycharm激活码永久)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4D5UJRVIF9-eyJsaWNlb…

    2022年3月30日
    56
  • Awvs详细使用教程「建议收藏」

    Awvs详细使用教程「建议收藏」Awvs的是一款非常好用的web漏洞扫描工具,他的扫描速度比较快,可以自己选择扫描速度,比较灵活。Awvs分为老的版本和新版本,下面我介绍的是新版本的功能和用法。功能介绍如下:仪表盘(监视器)功能,添加目标功能,漏洞排序功能,扫描功能,发现功能,用户功能,扫描配置功能,网络扫描功能,追踪器功能,防火墙设置,邮件设置,引擎,时间排除功能,代理功能,常规设置主要使用的功能是前面的6个,后面的根据个人的需要进行配置详细介绍如下:Dashboard功能:翻译意思仪表盘(监视器),可以对扫描对扫描

    2022年10月22日
    0
  • Python+Appium从安装到第一个小练习(保姆级别教程)

    Python+Appium从安装到第一个小练习(保姆级别教程)电脑系统:win10手机:安卓(没钱买苹果)需要的工具可以在这里下载,https://pan.baidu.com/s/1MupElpYcmeQH3uPQ1CUWjw提取码:AJDG

    2022年8月26日
    3
  • javascript 暂时性死区[通俗易懂]

    javascript 暂时性死区[通俗易懂]暂时性死区:ES6之前JS的一个BUG(美其名曰暂时性死区)。在使用typeof等运算符操作一个未声明的变量时,不会报错,该变量的值以undefined作处理ES6:ES6的变量声明方法(let,const,class…)解决了暂时性死区问题,会进行显式报错。ES6之前的暂时性死区console.log(typeofa); //undefined(noerror)ES6之后的变量声明console.log(typeofa); //UncaughtRefe..

    2022年6月15日
    63
  • JDBC_1原理及增刪改查「建议收藏」

    JDBC_1原理及增刪改查「建议收藏」JBDC数据的持久化:把数据保存到磁盘上。JDBC是java访问数据库的基石,JDO,Hibernate,Mybatis等都是基于JDBCJDBC是一个独立于特定数据库的管理系统,通用的SQL数据库存取和操作的公共接口配置文件:jdbc.propertiesuser=rootpassword=abc123url=jdbc:mysql://localhost:3306/testdriverClass=com.mysql.jdbc.Driver获取Connectionpublic s

    2022年8月8日
    4
  • AV1,实时编码READY

    AV1,实时编码READY点击上方“LiveVideoStack”关注我们一款编码器的成功,不仅需要大量的金钱,还需要耐心。AV1定稿三年后,是时候为它庆祝了。文|包研不知不觉,距离AV1完成定稿已经过去了三年…

    2022年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号