广告
返回顶部
首页 > 资讯 > 数据库 >初识Hibernate框架
  • 121
分享到

初识Hibernate框架

2024-04-02 19:04:59 121人浏览 薄情痞子
摘要

引、    之前在学校接触了Java的hibernate框架,觉得很强大。放假了,有时间好好看一看hibernate的相关技术。最近在imooc上看了相关的视频,写一

引、

    之前在学校接触了Java的hibernate框架,觉得很强大。放假了,有时间好好看一看hibernate的相关技术。最近在imooc上看了相关的视频,写一篇博客总结一下。



一、了解:

    Hibernate是一个ORM(Object Relational Mapping,对象关系映射)框架,对JDBC进行了轻量级的封装。使得程序员可以用面向对象的方法来进行数据库编程,使我们更容易用Java对数据库进行各种操作,完成数据持久化(我觉得就是实时同步)的任务。



二、配置:

    知道了Hibernate是什么,有什么用之后,我们来着手尝试一下。但是首先,要配置。


    我用的是Eclipse,在JAVA WEB工程下:

    1、jar

将hibernate所需的jar包都拷贝到WEB-INF\lib目录下,然后build path添加到配置文件中。所需的包可以在其官网下载,然后还要添加所要用jdbc的jar包。


    2、hibernate.cfg.xml配置

    在src目录下创建hibernate.cfg.xml,也就是config文件。

    贴一段配置代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<!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="show_sql">true</property>  
        <property name="hibernate.dialect">org.hibernate.dialect.MysqlDialect</property>  
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/lesson?useUnicode=true&amp;characterEncoding=utf8</property>  
        <property name="hibernate.connection.username">root</property>  
        <property name="hibernate.connection.passWord">root</property>  
        <property name="hbm2DDDl.auto">update</property>
        <mapping resource="com/ouc/domains/TUser.hbm.xml"/>
        <mapping resource="com/ouc/domains/TUrl.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

    关于以上参数,从上往下:

        <property>控制台打印sql语句,使用mysql方言,使用mysql数据库,数据库连接,用户名root,密码root,操作表的方式</property>

        <mapping/>里是两个实体类,对应数据库中的两张表。(实体类直接对应数据库中的表)


    3、TUser.hbm.xml

    TUser是其中一个实体类的名字,这里对应了数据库里的user表。对每一个实体类需要创建一个xml配置文件。配置代码示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.ouc.domains">
	<class name="TUser" table="t_user">
		<id name="id" column="id">
			<generator class="identity"></generator>
		</id>
		<property name="username" column="username"></property>
		<property name="password" column="password"></property>
	</class> 
</hibernate-mapping>

    其中对应关系:package-包名。class-类名,table-数据库表名。id-主键,name-类中属性名,column-数据库表列名。identity-主键increment自增。property-属性对应。


    配置的属性还有单表映射,一对多<one-to-many>,多对一<many-to-one>的表映射,如果进行过了双向配置,可以使用inverse关键字来实现控制。添加表的映射之后使得数据表之间关系更易于管理,就是数据库中添加外键一样,还可以用cascade等参数使其更加方便。

    

    4、添加工具类HibernateUtil.java

    在util包下新建HibernateUtil类。不多说,上代码:

package com.ouc.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceReGIStry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
	
public static SessionFactory sessionFactory;

	public HibernateUtil() 
	{
		
	}

	static {
		try {
			
			// sessionFactory = new
			// Configuration().configure().buildSessionFactory();

			
			Configuration cfg = new Configuration().configure();  //创建配置对象
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()  
					.applySettings(cfg.getProperties()).buildServiceRegistry(); //创建服务注册对象
			sessionFactory = cfg.buildSessionFactory(serviceRegistry);  //创建会话工厂
		} catch (Throwable e) {
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	
}

    我们通过sessionFactory就拿到session,然后可以进行各种操作了。


三、使用:

    Hibernate中使用HQL(Hibernate Query Language)进行查询,数据库中使用的SQL(Structured Query Language,结构化查询语言)进行查询,两者的语法几乎是一样的。


    写个Test测试一下,代码:

package com.ouc.util;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.ouc.domains.TUser;

public class TestUtil {
	public static void main(String[] args) {
		Session session = HibernateUtil.sessionFactory.openSession();
		String hql=" from TUser";
		Query query= session.createQuery(hql);
		List<TUser> users=query.list();
		for(TUser u:users){
			System.out.println(u.getId()+","+u.getUsername()+","+u.getPassword());
		}
	}
}

    上面要注意一个问题,debug了半天- - 太粗心了,用了hibernate就是面向对象编程了,所以在查找表的时候不是from tableName,而是要写from className。

    比如上面的hql用的from TUser,一开始写了from t_user就报错,提示没有映射。发现配置文件并没有问题,才想到这里写错了。


    看看结果,数据库中的数据:

    

初识Hibernate框架

    控制台输出结果:

初识Hibernate框架

    可以,很正确。


五、总结

    经过这一小段时间的视频学习,虽然学得不多也不深入,不过这样也算是初步认识了Hibernate框架,还要不断学习!技术的世界很广阔,为了去看看那些技术的秘密,也为了更好的明天,还要不断学习。加油吧,晚安少年。


您可能感兴趣的文档:

--结束END--

本文标题: 初识Hibernate框架

本文链接: https://www.lsjlt.com/news/43160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 初识Hibernate框架
    引、    之前在学校接触了Java的hibernate框架,觉得很强大。放假了,有时间好好看一看hibernate的相关技术。最近在imooc上看了相关的视频,写一...
    99+
    2022-10-18
  • 初识Struts2框架
    小编这次要给大家分享的是初识Struts2框架,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。Struts2以WebWork优秀的设计思想为核心,吸收了 Struts框架的部分优点,提供了一个更加整洁的...
    99+
    2023-05-30
    struts2 框架 st
  • Hibernate框架
    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的...
    99+
    2023-06-02
  • Web框架之Django_01初识(三大
    摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse、render、redirect)  一、Web框架概述: Python三大主流Web框架: Dj...
    99+
    2023-01-31
    三大 框架 Web
  • struts + Hibernate + Spring WEB框架
       struts:负责显示层,是一个完美的MVC实现,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。   Hibernate:创建一系列的持久化类,...
    99+
    2022-10-18
  • Hibernate框架关系映射
    接触Hibernate也有一小段的时间了,愈发的觉得Hibernate是个神奇的东西,为什么这么说呢?因为你可以不懂一行sql,直接面向对象,就可以将数据直接保存到数据库去!!你还可以保存一个对象,然后一次...
    99+
    2022-10-18
  • 【MyBatis】初识这一优秀的持久层框架
    学习目录 前言MyBatis简介快速入门映射文件sql片段与resultMap(🏳️‍🌈)MyBatis的增删改查1.添加操作2.修改操作3.删除操作 ...
    99+
    2023-10-24
    mybatis java mysql
  • 初识数据库连接池开源框架Druid
    Druid是阿里巴巴的一个数据库连接池开源框架,准确来说它不仅仅包括数据库连接池这么简单,它还提供强大的监控和扩展功能。本文仅仅是在不采用Spring框架对Druid的窥探,采用目前最新版本druid1.0...
    99+
    2022-10-18
  • Hibernate orm框架有什么用
    本篇内容主要讲解“Hibernate orm框架有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate orm框架有什么用”吧!Hibernate在解决性能问题方面做得非常好。...
    99+
    2023-06-17
  • 【Java框架】 Hibernate与Mybatis对比
    Hibernate与Mybatis对比    今天同事跟我说现在的小规模公司很少用hibernate,大部分都用mybatis。平时也经常接触这两方面,正好最近不怎么...
    99+
    2022-10-18
  • Hibernate-Validator(数据校验框架)
    目录 一、Hibernate-Validator 简介二、项目中为什么要用校验框架三、添加依赖四、看一个入门级案例五、常用注解六、使用groups的校验 一、Hibernate-Validator 简介 hibernate-...
    99+
    2023-08-17
    java hibernate spring
  • java中Hibernate框架有什么用
    本篇文章为大家展示了java中Hibernate框架有什么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2....
    99+
    2023-06-14
  • 持久层ORM框架中Hibernate框架的示例分析
    这篇文章主要介绍了持久层ORM框架中Hibernate框架的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言hibernate的概念:hibernate是一个orm...
    99+
    2023-06-25
  • Nest.js系列学习之初识nest项目框架及服务
    目录初始化新建一个nest项目文件目录启动nest服务nest中基础概念nest控制器新建一个控制器nest服务新建一个服务nest模块新建一个模块直接生成一个功能模块的代码资源ne...
    99+
    2023-02-14
    Nest.js 项目框架服务 Nest.js系列学习
  • 认识thinkphp框架
    https://www.thinkphp.cn/down.html 版本5.0.24 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架 tp5 WEB部署目录(或者子目录)...
    99+
    2023-09-04
    php apache java
  • hibernate框架怎么搭建和使用
    搭建和使用Hibernate框架可以按照以下步骤进行: 添加Hibernate依赖:在项目的构建文件中(如Maven的pom.x...
    99+
    2023-10-23
    hibernate
  • hibernate-validator如何使用校验框架
    目录一、前言二、常用注解说明三、定义校验分组四、定义校验Bean五、validator基本使用六、借助BindingResult七、全局拦截校验器八、借助ValidatorUtils...
    99+
    2022-11-13
  • 使用Spring注入Hibernate验证框架
    目录Spring注入Hibernate验证框架Spring配置文件Hibernate内置的验证约束注解如下表所示springmvc使用Hibernate的校验框架validation...
    99+
    2022-11-12
  • 怎么在java中安装Hibernate框架
    本篇文章为大家展示了怎么在java中安装Hibernate框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实...
    99+
    2023-06-14
  • 持久层ORM框架Hibernate框架的使用及搭建方式
    目录前言一、Hibernate的优点?二、Hibernate的缺点三、搭建Hibernate项目架构四、Hibernate核心接口的介绍五、封装Hibernate的工具类六、常用的C...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作