Hibernate框架快速搭建

本文介绍了Hibernate框架的基础知识和搭建步骤,包括对象关系映射(ORM)的概念,框架的分工,以及从导包、实体类创建、数据库准备到映射配置文件和核心配置文件的详细步骤。通过这些步骤,读者可以快速掌握Hibernate框架的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是框架?

就是一个半成品的项目,书写项目可以从半成品开始写,这样能够大大的提高开发效率。

不必纠结于框架本身的实现,自要学会如何使用即可。

 

Hibernate框架

简介

       Hibernate是一个开源的对象关系映射(ORM)框架。对JDBC进行了非常轻量级的对象封装。 将对象和数据库表建立映射关系,Hibernate框架使用在数据持久化层(dao)。 也就是:实体类和数据表之间建立了联系,通过操作对象,直接对数据库进行修改。

ORM:Object  relaction  mapping

框架中的分工:


 

框架搭建

1、导包

导入hibernate所需要的架包,还有数据库驱动包

2、准备一个实体类

  1. 所有的属性应该设置为私有,并添加get-set方法;
  2. 构造函数要么不写,如果要写至少要写两个(必须包含一个空的)//因人而异,我学的时候老师就是这样教的
  3. 属性的类型应是包装类型
  4. 必须拥有一个在主键

3、准备数据库

数据库必须由我们自己建立,数据库表可以由hibernate自动创建;如果手动创建,表中的字段要和实体类一一对应。 

4、创建实体类和数据表之间的映射配置文件

创建一个  实体类名+.hbm+.xml  建议此文件与实体类在同一目录下

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--下面class中的类的路径,下面的class name属性可以简写-->
<hibernate-mapping package="cn.hd.bean">
<!--<hibernate-mapping>-->

<!--映射类和数据库表之间的关系-->

<!--name属性是实体类名 如果报红,说明没有这个实体类--><!-- 写完整路径名-->
    <class name="User" table="t_user">
<!--<class name="cn.hd.bean.User" table="t_user">-->

<!--映射文件中必须拥有 -->
          <id name="id" column="id">
          <!--主键生成策略
            native :自动递增
            identity :mysql自动递增
            increment :从数据库中取出主键的最大值(每个session只取1次),以该值为基础,每次增量为1
            sequence :oracle数据库中的自动递增
            assigned :主键由外部程序负责生成,在 save() 之前必须指定一个
            UUID :自动增长 格式:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
            其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字 多用于企业
-->
                 <generator class="native"></generator>

          </id>

<!--基本属性 column是字段名 在这里可以设置数据库的属性-->
         <property name="name" column="name"></property>
         <property name="sex" column="sex"></property>
         <property name="age" column="age"></property>
         <property name="balance" column="balance"></property>
     </class>
</hibernate-mapping>

5、书写核心配置文件

名字必须是 hibernate.cfg.xml    必须放在src目录下 

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--必须写  数据库的连接属性-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=utf-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
<!--org.hibernate.dialect.MySQL5Dialect-->
        <!--方言  必须设置  -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!--在控制台展示SQL语句   不必须-->
        <property name="hibernate.show_sql">true</property>
        <!--SQL语句格式化   不必须-->
        <property name="hibernate.format_sql">true</property>
        <!--1、update  如果映射文件和数据库表保持一致就不修改,如果没有就自动创建
            2、create  每次执行都会重新创建一个表(覆盖)
            3、create-drop 先将原来的表删除  然后重新创建
            4、validate  只做校验,不修改表-->
        <property name="hibernate.hbm2ddl.auto">update</property>
<!--事务的隔离级别
    1 什么都不解决
    2 解决了 脏读  幻读
    4 解决了 脏读  不可重复读
    8 都能解决-->
        <property name="hibernate.connection.isolation">4</property>
<!--扫描映射文件
    class   必须  映射文件和配置文件的名字和路径  一致
    package  扫描该包下的配置文件
    resource   指定某个确定的xml配置文件
    -->
        <mapping resource="cn/hd/bean/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

6、书写测试代码

public static void main(String[] args) {
            //读取配置文件
            Configuration cfg = new Configuration();
            cfg.configure();
            //创建sessionFactory
            SessionFactory sessionFactory = cfg.buildSessionFactory();
            //获得一个session
            Session session = sessionFactory.openSession();
            //开启事务
            Transaction transaction = session.beginTransaction();
            User user = new User();
            user.setName("张三");
            user.setAge(22);
            user.setBalance(10000);
            user.setSex("男");
            session.save(user);
            //提交事务
            transaction.commit();
            //释放资源
            session.close();
            sessionFactory.close();
        }

测试前:

测试后:

控制台显示内容:

      下面就是

<property name="hibernate.show_sql">true</property>//显示SQL语句
<property name="hibernate.format_sql">true</property>//格式化SQL语句   的作用,方便查看

声明:开发工具:IDEA   数据库:MySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值