Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate入门第一讲——Hibernate框架的快速入门Hibernate 框架介绍什么是 Hibernate 我们可以从度娘上摘抄这样有关 Hibernate 的介绍 Hibernate 是一个开放源代码的对象关系映射框架 它对 JDBC 进行了非常轻量级的对象封装 它将 POJO 与数据库表建立映射关系 是一个全自动的 orm 框架 hibernate 可以自动生成 SQL 语句 自动执行 使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库 Hibernate 可以

Hibernate框架的概述

什么是框架?

框架指的是软件的半成品,已经完成了部分功能。

JavaEE开发的三层架构

Hibernate概述

什么是Hibernate?

什么是ORM?

为什么要学习Hibernate框架?

与其它操作数据库的技术相比,Hibernate具有以下几点优势:

  • Hibernate对JDBC访问数据库的代码做了轻量级封装,大大简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率;
  • Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现,它很大程度的简化了DAO(Data Access Object,数据访问对象)层编码工作;
  • Hibernate的性能非常好,映射的灵活性很出色。它支持很多关系型数据库,从一对一到多对多的各种复杂关系;
  • 可扩展性强,由于源代码的开源以及API的开放,当本身功能不够用时,可以自行编码进行扩展。

总结:Hibernate是企业级开发中的主流框架,映射的灵活性很出色,并且它支持很多关系型数据库。

Hiberate框架学习目标

由于之前学过Hiberate框架,所以这就等于是在复习了。对于Hiberate框架的学习重点,可以总结为:

  1. 掌握Hiberate的基本配置——即搭建Hiberate开发环境;
  2. 掌握Hiberate常用API——即如何使用Hiberate框架进行开发;
  3. 掌握Hiberate的关联映射——解决表与表之间存在的关系问题,有1:n(一对多)、 1:1(一对一)、m:n(多对多)关系;
  4. 掌握Hiberate的检索方式——即掌握Hiberate的查询;
  5. 掌握Hiberate的优化方式——即提高Hiberate的效率。

Hibernate快速入门

介绍完Hibernate框架之后,我们来快速入门Hibernate,对其有一个直观的了解。

下载Hibernate5

创建一个普通的Java项目,导入Hibernate框架相关依赖jar包

创建一个普通的Java项目,例如hibernate_demo01,然后导入Hibernate框架相关依赖jar包。

  • 首先导入Hibernate开发必须的jar包,即lib/required目录下所有的jar包:
    这里写图片描述

  • 再导入MySQL数据库的驱动jar包:
    这里写图片描述

  • 最后导入日志记录相关的jar包:
    这里写图片描述
    导入完日志相关的jar包之后,我们还要导入日志记录文件,日志记录文件咱也是第一次接触,不知道咋写啊?没关系,找到project/etc/log4j.properties文件,很明显,它就是日志记录文件,将它拷贝复制到我们项目的src目录下,打开它,这里面的内容有点多啊!而且我们现在也不知道是什么意思,咋办?先跟着我将其内容精简为下面这样,后面我再来为大家做一点解释。




     direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n direct messages to file mylog.log log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c\:mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n set log levels - for more verbose logging change 'info' to 'debug' # error warn info debug trace log4j.rootLogger= info, stdout 

创建数据库与表

正如前面所说,Hibernate是一个轻量级的JDBC封装,也就是说,我们可以使用Hibernate来完成原来我们使用JDBC完成的操作,也就是与数据库的交互操作。所以我们首先要创建数据库与表,这里我使用的数据库是MySQL。

create database hibernate_demo01; use hibernate_demo01; CREATE TABLE `cst_customer` ( `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)', `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源', `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业', `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别', `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话', `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话', PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

创建实体类

我们在com.meimeixia.hibernate.demo01包中创建一个实体类——Customer.java,如下:

package com.meimeixia.hibernate.demo01; public class Customer { 
    private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_phone; private String cust_mobile; public Long getCust_id() { 
    return cust_id; } public void setCust_id(Long cust_id) { 
    this.cust_id = cust_id; } public String getCust_name() { 
    return cust_name; } public void setCust_name(String cust_name) { 
    this.cust_name = cust_name; } public String getCust_source() { 
    return cust_source; } public void setCust_source(String cust_source) { 
    this.cust_source = cust_source; } public String getCust_industry() { 
    return cust_industry; } public void setCust_industry(String cust_industry) { 
    this.cust_industry = cust_industry; } public String getCust_level() { 
    return cust_level; } public void setCust_level(String cust_level) { 
    this.cust_level = cust_level; } public String getCust_phone() { 
    return cust_phone; } public void setCust_phone(String cust_phone) { 
    this.cust_phone = cust_phone; } public String getCust_mobile() { 
    return cust_mobile; } public void setCust_mobile(String cust_mobile) { 
    this.cust_mobile = cust_mobile; } @Override public String toString() { 
    return "Customer [cust_id=" + cust_id + ", cust_name=" + cust_name + ", cust_source=" + cust_source + ", cust_industry=" + cust_industry + ", cust_level=" + cust_level + ", cust_phone=" + cust_phone + ", cust_mobile=" + cust_mobile + "]"; } } 

创建Hibernate的相关配置文件

准备好以上工作之后,我们终于要踏入Hibernate的学习中了。首先我们要编写Hibernate的相关配置文件,Hibernate的相关配置文件分为两种:

  1. Xxx.hbm.xml:它主要是用于描述类与数据库中的表的映射关系;
  2. hibernate.cfg.xml:它是Hibernate框架的核心配置文件。

有关这两个配置文件的详细介绍,我后面会给大家讲解,如果就在这里弄的话,违背了我的初衷了,本文只是在教初学者怎样快速入门Hibernate。

创建映射配置文件

首先我们要学会如何编写映射配置文件,大家要知道编写完的映射配置文件应与实体类在同一个包下,并且名称应是类名.hbm.xml,所以我们要在com.meimeixia.hibernate.demo01包下创建一个Customer.hbm.xml文件,但是它的约束应该怎么写呢?可以在Hibernate的核心jar包——hibernate-core-5.0.7.Final.jar的org.hibernate包下查找到hibernate-mapping-3.0.dtd文件,打开该文件,找到如下内容:
在这里插入图片描述
然后复制黏贴到Customer.hbm.xml文件中即可。这里我先给出Customer.hbm.xml文件的内容,但内容不做过多介绍:




 
     <hibernate-mapping>  
    <class name="com.meimeixia.hibernate.demo01.Customer" table="cst_customer">  
    <id name="cust_id" column="cust_id">  
    <generator class="native" />  
     id>  
     <property name="cust_name" column="cust_name" /> <property name="cust_source" column="cust_source" /> <property name="cust_industry" column="cust_industry" /> <property name="cust_level" column="cust_level" /> <property name="cust_phone" column="cust_phone" /> <property name="cust_mobile" column="cust_mobile" />  
      class>  
       hibernate-mapping> 

创建核心配置文件

 
     <hibernate-configuration> <session-factory>  
     
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver 
     property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_demo01 
      property> <property name="hibernate.connection.username">root 
       property> <property name="hibernate.connection.password">liayun 
        property>  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
         property>  
          
         <property name="hibernate.show_sql">true 
          property>  
          <property name="hibernate.format_sql">true 
           property>  
           <mapping resource="com/meimeixia/hibernate/demo01/Customer.hbm.xml"/>  
            session-factory>  
             hibernate-configuration> 

Hibernate快速入门开发测试

在com.meimeixia.hibernate.demo01包下创建一个单元测试类——HibernateDemo1.java。

package com.meimeixia.hibernate.demo01; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; / * Hibernate的入门案例 * @author liayun * */ public class HibernateDemo1 { 
    //保存用户的案例 @Test public void demo1() { 
    //1. 加载Hibernate的核心配置文件 Configuration configuration = new Configuration().configure(); //如果在Hibernate的核心配置文件没有设置加载哪个映射文件,则可手动加载映射文件 //configuration.addResource("com/meimeixia/hibernate/demo01/Customer.hbm.xml"); //2. 创建SessionFactory对象,类似于JDBC中的连接池 SessionFactory sessionFactory = configuration.buildSessionFactory(); //3. 通过SessionFactory获取到Session对象,类似于JDBC中的Connection Session session = sessionFactory.openSession(); //4. 手动开启事务,(最好是手动开启事务) Transaction transaction = session.beginTransaction(); //5. 编写代码 Customer customer = new Customer(); customer.setCust_name("张小敬aaa"); session.save(customer);//保存一个用户 //6. 事务提交 transaction.commit(); //7. 释放资源 session.close(); sessionFactory.close(); } } 

测试如若都无任何问题,则我们就算入门Hibernate了。

Hibernate执行原理总结

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

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

(0)
上一篇 2026年3月19日 上午9:19
下一篇 2026年3月19日 上午9:19


相关推荐

发表回复

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

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