Hibernate基础入门整理

    Hibernate是一种基于ORM的思想来实现与数据库交互的框架,使用这个框架来操作数据库更为方便也更符合

面向对象的对象的思想,下面整理了一些Hibernate基础入门的知识,掌握这些基础知识对深入学习Hibernate框架原理有更好的推动

    首先,Hibernate框架是基于ORM思想的,要使用这个框架首先要准备一个符合JavaBean规范的类

public class Student {
    int id;
    String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

 在这里,我们准备了一个很简单的学生类,他只提供了两个成员变量id(用于作为表的主键),name

下面,我们要导入Hibernate的JAR包以及他所依赖的JAR包,对于初学者,因为还不熟悉Hibernate框架,所以推荐整套下载资源(因为不同的Hibernate版本所依赖的JAR包有严格的规范)在这里,我分享了一套资源用于供大家下载:

     百度网盘:https://pan.baidu.com/s/13mi1KTNa5bU8uKbxpiD48A     密码:3qpn

然后我们把对应的JAR包导入项目中(至于如何导入JAR包以及如何使用,在这里就不过多阐述,如果还不熟练这些操作,那看到这里的朋友就有点心急了,要把基础打牢)

我们创建好类并且导入Hibernate框架之后,下一步,我们需要创建两个xml文件,用于把我们创建的学生类映射到Hibernate框架中,在这里,我们先简单的讲一下Hibernate的工作原理,Hibernate框架是先会读取hibernate.cfg.xml这个配置文件来读取要操作数据库的策略(具体配置的内容,后面会讲到,这里大家先了解有这么一个概念),在hibernate.cfg.xml中我们会配置操作数据库相关的操作信息,以及另一个xml文件的映射(前面我们说过,我们要准备两个xml文件),而这个xml文件的名字就是XXXXX.hbm.xml,比如,我们要把我们之前创建的Student类映射到Hibernate框架,就需要在hibernate.cfg.xml中映射Student.hbm.xml文件,在Student.hbm.xml中,我们就需要配置一些类对表的关系了(可能看到这里比较绕,不过没有关系,跟着这篇教程走,过一遍之后再回来看这句话相信你可以完全理解其中的含义),简单的总结一下就是,Hibernate框架工作会先读取hibernate.cfg.xml文件hibernate.cfg.xml,而hibernate.cfg.xml文件会读取Student.hbm.xml文件,经过这两步之后,我们就实现了类对应表的连接,而具体连接的细节,是Hibernate框架已经封装好的,不需要我们操心(但是学完Hibernate框架基础后,操心一下总是好的,更深入的理解Hibernate框架的实现细节,对于我们来说也可以更好的理解和使用,并且可以借鉴他的思想)

下面放一张图来表示对应的关系

(画图水平有限还没有鼠标,不过我已经很努力的)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面,让我们来配置Student.hbm.xml(这个文件的位置应当与我们要映射的类在同一个包下,在这里,也就是与Student这个类在同一个包下)

<?xml version="1.0"?>
<!-- 导入约束 -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 <!-- 在这里填写Student所在的包路径,我的Student类在cn.encore.bean这个路径下 -->
<hibernate-mapping package="cn.encore.bean">
 <!-- 这里配置主要的映射关系,我们要把Student类映射到student这个表中,name属性填类名,table属性填表名 -->
    <class name="Student" table="student">
 <!-- 把我们的学生类的id属性作为主键,<generator class="native"> 意味着id的自增长方式采用数据库的本地方式-->
        <id name="id" column="id">
            <generator class="native">
            </generator>
        </id>
 <!-- 把学生类中name属性做一下映射,在这里,我们只设置了name属性,而没有声明他对应表中的哪个元素,也就是table属性,这是因为只要我们保证自己编写的JavaBean属性与表中的元素名如果相同,那么我们是可以省略配置table属性的 -->
        <property name="name" />
    </class>     
</hibernate-mapping>

下面,让我们来配置一下hibernate.cfg.xml(这个文件的位置要在项目根目录的src文件夹下)

<?xml version='1.0' encoding='utf-8'?>
<!-- XML约束 -->
<!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>
        <!-- Database connection settings -->
        <!-- 配置数据库驱动 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 配置数据库url -->
        <property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8</property>
        <!-- 数据库账户 -->
        <property name="connection.username">root</property>
        <!-- 数据库密码 -->
        <property name="connection.password">admin</property>
        <!-- SQL dialect -->
        <!-- 数据库使用的方言,这里使用了MySql方言 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 这句代表一个线程启动一个session -->
        <property name="current_session_context_class">thread</property>
        <!-- 这句代表在控制台输出执行的sql语句 -->
        <property name="show_sql">true</property>
        <!-- 这句代表自动更新表结构,我们之前是根本没有创建表的,当配置这条后,Hibernate会为我们自动生成表以及自动更新表 -->
        <property name="hbm2ddl.auto">update</property>
        <!-- 映射的XXXXXX.hbm.xml文件 -->
        <mapping resource="cn/encore/bean/Student.hbm.xml" />
    </session-factory>
 
</hibernate-configuration>

配置好之后,我们就可以使用Hibernate框架了,下面我们编写一个测试类

package cn.encore.test;
 
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
 
import cn.encore.bean.Student;
 
public class TestHibernate {
    public static void main(String[] args) {
 //先得到一个Session工厂,用于得到Session
        SessionFactory sf = new Configuration().configure().buildSessionFactory();
 //获取一个Session对象
        Session s = sf.openSession();
 //打开事务
        s.beginTransaction();
 //创建一个学生类,并为其设置名字
        Student stu = new Student();
        stu.setName("王闪火");
 //把这个学生保存到student表中
        s.save(stu);
 //获得事务并提交
        s.getTransaction().commit();
 //关闭session以及session工厂
        s.close();
        sf.close();
    }
 
}

运行这段代码后,我们再去查看数据库,会发现在test数据库中,多了一个student表,其中有一条叫做王闪火的记录,看到这里

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值