Hibernate环境搭建(小实例)

2023-11-07

       Hibernate是一个开源的对象关系映射框架,在学习之前,首先让我们先了解一下Hibernate环境是如何搭建的。废话不多说,直接进入正题。


建项目,引Jar包

      首先,我们需要创建一个Java项目,创建好项目之后,就需要引入与Hibernate相关的jar包。这里,我把这些jar包统一的加到一个库中。我们自己建立一个库“HIBERNATE3”,把Hibernate中的第三方jar包和Hibernate.jar都引入,当然,还有数据库的jdbc驱动(我这里用的是mysql)如图:



      然后,我们就可以把建好的库引入到项目中了,具体操作为:右键项目名称-->Properties-->Java Build Path,如图:



核心文件配置

        到现在,已经把建好的库引入到项目中了,之后我们要做的就是,把Hibernate的核心配置文件(hibernate.cfg.xml)引入到项目中,该核心配置文件会给Hibernate提供数据库的映射,使得Hibernate与数据库进行连接。如图所示:



        之后,我们需要对Hibernate核心文件做一下配置,加入MySQL的JDBC驱动,配置数据库连接。代码如下:

<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">bjpowernode</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>

	</session-factory>
</hibernate-configuration>


建立实体类

      到这里,简单的环境就搭建好了,之后就是建立实体类,并对实体类进行映射了。为了方便起见,建立一个User实体类,并且定义了几个简单的属性。代码如下:

package com.bjpowernode.hibernate;

import java.util.Date;

public class User {

	private String id;
	
	private String name;
	
	private String password;
	
	private Date createTime;
	
	private Date expireTime;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Date getExpireTime() {
		return expireTime;
	}

	public void setExpireTime(Date expireTime) {
		this.expireTime = expireTime;
	}
}


映射文件配置

        实体类建立好之后,就需要将实体类与数据库进行映射,建立数据库映射文件(User.hbm.xml),代码如下:

<?xml version="1.0"?>
<!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.bjpowernode.hibernate.User">
		<id name="id">
			<generator class="uuid"></generator>
		</id>
		<property name="name"></property>
		<property name="password"></property>
		<property name="createTime"></property>
		<property name="expireTime"></property>
	</class>
</hibernate-mapping>


        实体类的映射完成之后,我们还需要把实体类的映射源文件加入到Hibernate的核心配置文件中,代码如下所示:

<session-factory>
	<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
</session-factory>


导入数据表

        然后,我们还需要建立一个小Demo,通过读取hibernate.cfg.xml文件,实现建立数据表结构。(部分代码):
public static void main(String[] args) {
		
	// 默认读取hibernate.cfg.xml文件
	Configuration cfg = new Configuration().configure();
		
	SchemaExport export = new SchemaExport(cfg);
		
	export.create(true, true);
}


测试客户端

        最后,你可以建立一个客户端,对其进行测试,给数据库中插入几条数据。

package com.bjpowernode.hibernate;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		// 读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();
		
		// 建立SessionFactory
		SessionFactory factory = cfg.buildSessionFactory();
		
		// 取得session
		Session session = null;
		try {
			session = factory.openSession();
			
			// 开启事务
			session.beginTransaction();
			
			User user = new User();
			user.setName("Tom");
			user.setPassword("123");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());
			
			//保存User对象
			session.save(user);
			
			// 提交事务
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if(session != null) {
				if(session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}	
	}
}


测试结果

         下面来看一下我们建立的表user以及user的表结构,如图:


        最后,我们执行测试客户端,来看一下插入的数据,如图:


结束语

       到这里,简单的搭建环境小实例就结束了,看到这,你明白如何搭建自己的Hibernate环境并对其进行测试了吗?这只是一个简单的小例子,Hibernate对JDBC提供了轻量化的对象封装,使得程序员可以对象的编程思维对数据库进行操作,而无需了解繁琐的数据表结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate环境搭建(小实例) 的相关文章

  • 夜莺(Nightingale)企业级监控平台

    元芳算法服务部署 监控篇 内部 简介 夜莺 Nightingale 是滴滴基础平台联合滴滴云研发和开源的企业级监控解决方案 旨在满足云原生时代企业级的监控需求 Nightingale在产品完成度 系统高可用 以及用户体验方面 达到了企业级的
  • Nginx重中之重的知识点

    1 反向代理 proxy pass http baidu com location proxy pass http atcui com 代理服务器的概念 代理服务器 客户机在发送请求时 不会直接发送给目的主机 而是先发送给代理服务器 代理服
  • JavaSE复习:面向对象编程

    首先 面向对象 OOP Object Oriented Programming 的相对词语是面向过程 POP Procedure Oriented Programming 面向过程 强调的是功能行为 以函数为最小单位 考虑怎么做 面向对象
  • 序列化和反序列化(面试已问过,常问点)

    一 序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化 把字节序列恢复为对象的过程称为对象的反序列化 对象的序列化主要有两种用途 1 把对象的字节序列永久地保存到硬盘上 通常存放在一个文件中 2 在网络上传送对象的字节序列
  • Java如何让自定义类型具有可比较大小的能力

    自定义类型大小比较 一 背景 二 两种方法 方式一 自然排序 方式二 定制排序 一 背景 Java中基本数据类型之间可以使用比较运算符 gt lt gt lt 等进行比较 引用数据类型之间进行比较时 使用继承于Object类的equals方
  • Lombok详细教程及idea中lombok插件的安装

    一 背景 我们在开发过程中 通常都会定义大量的JavaBean 然后通过IDE去生成其属性的构造器 getter setter equals hashcode toString方法 当要对某个属性进行改变时 比如命名 类型等 都需要重新去生
  • Spring 定时器 No qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined

    最近项目里面 用了spring的定时任务 一直以来 项目运行的不错 定时器也能正常使用 可是 今天启动项目测试的时候 盯着启动Log看了一阵子 突然间发现 启动的Log中居然有一个异常 虽然一闪而过 但是那熟悉的异常格式还是让我浑身一颤 这
  • 前台js中json转数组,数组转json;后台字符串String转list(类),String 转map

    前台js 数组转json串 var arr 1 2 3 a 1 JSON stringify arr json字符串转数组 var jsonStr 1 2 3 a 1 JSON parse jsonStr 后台String转list Str
  • 佛祖保佑,永无bug——springboot项目启动图案的修改方法

    在resources目录 与application yml文件同级目录 下创建banner txt文件 将下面的代码复制进去就好了 AnsiColor BRIGHT YELLOW ooOoo o8888888o
  • java后台实现模拟登陆

    一 原理 客户端访问服务器 服务器通过Session对象记录会话 服务器可以指定一个唯一的session ID作为cookie来代表每个客户端 用来识别这个客户端接下来的请求 我们通过Chrome浏览器进行网页访问时 服务器会在我们第一次请
  • javax.validation.constraints注解

    文章目录 概要 常用的注解 其他注解 小结 概要 javax validation constraints是Java Validation API中的一个包 它提供了一组注解 用于在Java代码中进行数据校验和验证 该包中定义了多个注解 用
  • spring boot 启动报错,找不到DataSource

    报错信息如下 16 39 11 372 1653 main WARN o s b c e AnnotationConfigEmbeddedWebApplicationContext AbstractApplicationContext ja
  • Springboot +Flowable,DataObject的使用方式

    一 简介 在 Flowable 流程图的绘制过程中 可以编写一个名为 dataObject 数据对象 的元素 这个元素可以指定变量的 id 名称以及数据类型等各种属性 并且在流程实例启动的时候 会自动将 dataObject 元素的信息转换
  • Alibaba Druid简单介绍及使用

    文章目录 概要 Druid 的主要特点和功能 Druid 的使用 一 添加依赖 二 配置数据源 三 配置 Druid 监控和过滤器 四 启动应用程序 五 访问监控页面 小结 概要 Alibaba Druid 以下简称 Druid 是阿里巴巴
  • bootstrap使用之stickUp(固定导航栏)

    1 stickUp是jQuery下的一个导航栏插件 当界面较长时 导航栏会固定在顶部 不会移动 如下图 2 废话少说 下载http www bootcss com p stickup 在里面有示例文档 只是注意看index的时候js写在下面
  • 【转载】使用jsoup替换HTML标记

    原始代码 String html font fsdfs font dfsdf font dasdasd font Document doc Jsoup parse html Elements elements doc select font
  • ubuntu 如何放开端口

    在 Ubuntu 上放开端口 可以通过以下步骤进行操作 使用 root 用户或具有管理员权限的用户登录到 Ubuntu 系统 使用防火墙工具 如ufw 放开特定的端口 ufw 是 Ubuntu 上的一个简化的防火墙配置工具 可以轻松管理端口
  • 【理解springboot自动装配原理】

    理解springboot自动装配原理 最近读了小马哥 mercyblitz Springboot编程思想 核心篇 有了一些心得和感悟 分享给大家 1 官网介绍了激活自动装配的方法 文档提到激活自动化装配的注解 EnableAutoConfi
  • MySQL幻读:大家好,我是幻读,我今天又被解决了

    什么是幻读 幻读的定义我这里还得补充一句 幻读仅专指 新插入的行 中途通过 update 更新数据而出现同一个事务前后两次查询的 结果集合 不一样 这种不算幻读 然后前几天有位读者跟我说 这个幻读例子不是已经被 可重复读 隔离级别解决了吗
  • 设计模式详解---策略模式

    1 策略模式简介 策略模式 Strategy Pattern 是一种行为型设计模式 用于在运行时根据不同的情境选择不同的算法或策略 该模式将算法封装成独立的类 使得它们可以相互替换 而且可以独立于客户端使用它们的方式 1 1 主要角色 上下

随机推荐