zoukankan      html  css  js  c++  java
  • Java学习之Hibernate框架使用

    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并不是本次主要目的,这里用于做简单记录。

    WX:TG9yaTI1NDgyNjYxNDU= 欢迎各位师傅来一起做技术交流
  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/nice0e3/p/14799955.html
Copyright © 2011-2022 走看看