利用hibernate自动创建数据库

两种创建数据库表的方法,基于反射和基于Hibernate框架 在现代应用软件开发中,一个重要的任务就是将实体类映射到数据库表。实体类表示业务对象、领域模型中的对象,通常由多个数据字段组成。而数据库表则存储这些数据,提供查询、存储等功能。实体类和数据库表之间需要建立一种映射关系,使得能够在程序中方便地操作实体类对象并将其保存到数据库中。创建数据库表的方法有多种,本文将介绍两种常用的方法:1)基于反射的方式;2)基于Hibernate框架。本文主要阐述了两种创建数据库表的方法,基于反射和基于Hibernate框架。 阅读详情

首先hibernate配置文件,hibernate.cfg.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>
	    <!-- 连接数据库的方言 -->
	    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
	    <!-- 连接数据库的驱动名 -->
	    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	    <!-- 连接数据库的URL -->
	    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/helloHibernate</property>
	    <!-- 连接数据库的用户名 -->
	    <property name="hibernate.connection.username">root</property>
	    <!-- 连接数据库的密码 -->
	    <property name="hibernate.connection.password">123456</property>
        <!-- 在控制台显示SQL语句 -->
		<property name="show_sql">true</property>
		<!-- 自动建表 -->
		<property name="hibernaete.hbm2ddl.auto">update</property>
		<mapping resource="com/domainModel/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

然后就建立一个实体类

package com.domainModel;

public class User {
	private int id;
	private String username;
	private String password;
	private int age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

然后配置实体类的映射文件。

<?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">

<hibernate-mapping>

	<class name="com.domainModel.User" table="Test_USER">
		<id name="id" column="id">
			<generator class="identity" />
		</id>
             <!--设置主键-->
		<property name="username" column="name" />
		<property name="password" column="password"/>
		<property name="age" column="age"/>
	</class>

</hibernate-mapping>
然后写测试类
package com.DAO;

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

import com.domainModel.User;

public class testSaveUser {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Configuration cfg = null;
		SessionFactory sf = null;
		
		Session s = null;
		Transaction ts = null;
		User user = new User();
		user.setUsername("老范");
		user.setPassword("laofan");
		user.setAge(21);
		try {
			cfg = new Configuration().configure();
			sf = cfg.buildSessionFactory();
			
			s = sf.openSession();
			ts = s.beginTransaction();
			s.save(user);
			ts.commit();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			if(ts != null)
			{
				ts.rollback();
			}
			e.printStackTrace();
		} finally{
			if(s != null){
				s.close();
			}
		}
	}

}

运行结果



我在运行当中遇到几个问题:

1.注意数据库方言,其中包括版本号问题(MySQL5.7以上需要在"MySQL"后面加个"5")。而且,报错说明你的数据库没有建立这个表导致你的程序并没有成功,可以把数据库方言换成"org.hibernate.dialect.MySQLialect"(也就是说用MySQLIonnoDB智能在数据库不能自动建表);

2.关于hibernate.hbm2ddl.auto参数的问题

create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。

create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。

update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。

validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。


攻克TypeError: Cannot read properties of undefined (reading ‘NormalModule‘)的四种实战策略 本文详细解析了`TypeError: Cannot read properties of undefined (reading 'NormalModule')`错误的四种实战解决策略。从版本一致性检查、包管理器优化到依赖替换和构建环境配置,帮助开发者快速定位和解决Webpack构建过程中的常见问题,提升开发效率。 阅读详情

相关推荐

STK传感器约束设置保姆级教程:从方位角到传播延迟,手把手教你避开新手常见坑

本文详细解析了STK传感器约束设置的关键技巧,涵盖方位角、仰角、高度及传播延迟等核心参数。通过实战案例和代码示例,指导用户避开常见误区,优化卫星通信和航天任务仿真精度,特别适合STK新手和需要提升传感器配置效率的工程师。

weixin_33701294的博客 392

Hibernate学习(一)

对象-关系映射(Object Relational Mapping) 对象-关系映射(ORM),是随着面向对象的软件开发方法发展而产生的。用来把域模型表示的对象映射到关系数据模型对应的数据库结构中去。 通过ORM思想在操作实体对象的时候,就不需要再去和复杂的 SQL语句打交道,只需简单的操作实体对象的属性和方法,ORM 技术是在实体类对象和数据库表之间提供了一条桥梁,对象型数据和数据库中的关系型...

Despair4720的博客 376

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1994

hibernate 配置文件(hibernate.properties)基本模板

 ######################### Query Language ########################### define query language constants / function nameshibernate.query.substitutions true 1, false 0, yes Y, no N

人世间整不明白的事儿太多 5059

大麦网抢票协议逆向分析:从Web安全到高并发风控实战

在当今高并发Web应用场景下,理解网络协议交互与反爬虫机制是后端开发和系统架构设计的核心技能。其基本原理涉及客户端与服务器之间通过HTTP/HTTPS协议进行数据交换,关键环节包括请求参数构造、身份认证与会话管理。这一技术的核心价值在于保障系统安全与公平性,通过动态令牌、签名算法及设备指纹等多重手段,有效抵御自动化脚本攻击。典型应用场景包括票务系统、电商秒杀等需要严格管控资源访问的高并发业务。本文以热门票务平台为例,深入剖析其**请求链与令牌体系**及**行为生物特征分析**等风控策略,通过实战演示协议逆向

weixin_34354173的博客 454

手把手教你用OPA运放和MOS管搭建恒流源电路(附完整电路图)

本文详细介绍了如何使用OPA运放和MOS管搭建高精度恒流源电路,涵盖核心元器件选型、电路设计、工作原理及实际搭建步骤。通过负反馈控制机制和MOS管工作区设置技巧,实现稳定的电流输出,适用于LED驱动、电池充电等场景。附完整电路图和调试技巧,助您快速掌握恒流源设计。

weixin_29239279的博客 537

Hibernate连接SQL Server(非默认实例)URL配置

hibernate.connection.url=jdbc:sqlserver://localhost;instanceName=MSSQLSERVER2;databaseName=WITHDB //localhost为服务器地址; MSSQLSERVER2数据库的实例名; WITHDB为数据库名;不需设置端口地址,用分号隔开。 也有看过 jdbc:sqlse

天河北的梅果糖 3161

SPSS27 paired t-test 中的Cohen’s D – Effect Size for T-Test

两组数据是相关的且是连续的。

moonlightpeng的博客 910

Hibernate基础配置

在使用Hibernate框架进行基础的配置 1.导入jar包 2.引入配置文件Hibernate.cfg.xml   该配置文件配置了连接数据库的基本配置 可选配置:  hibernate.hbm2ddl.auto none:不使用hibernate自动建表 create:如果数据库中已有表,删除原表,重新创建,如果没有表,创建新表 create-drop  如果已经有表,删除原表,执...

weixin_43014205的博客 317

内网开发必备:银河麒麟V10离线安装全流程(含镜像挂载+yum源配置)

本文详细介绍了在内网隔离环境下,银河麒麟V10操作系统的离线安装与部署全流程。核心内容包括官方镜像的获取与校验、使用mount命令进行镜像挂载的详细步骤与问题排查,以及构建稳定、可维护的本地Yum软件仓库的完整方法论。通过实战案例演示了如何基于本地源部署LNMP环境,并提供了高级配置技巧与常见故障排除指南,旨在帮助运维人员系统性地构建高可用的内网软件供应链。

weixin_29268637的博客 562

BUUCTF--[OGeek2019]babyrop

才学习了基本的ROP流程,到处找题练,不过也没做出来几道题,以这道32位的题作为例题吧。 这道题是BUUCTF上pwn练习题里的[OGeek2019]babyrop。 代码审计 老规矩先checksec一下: 没有canary保护,nx保护开启排除shellcode可能性,FULL RELEO为地址随机化。 观察主函数,先设定了一个闹铃,到时间就会强制退出程序,解除闹铃的方法在上一篇博客中提到过了, 这道题中闹铃函数依然对我们解题起不到什么干扰作用。 主函数的思路大概是:生成一个随机数,把这个随机数作为

N1rvana的博客 6009

配置Hibernate之各类属性

Hibernate需要进行数据库访问,因此必须设置连接数据库的相关的属性。所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义。 下面是JDBC连接配置中最重要的设置 (1)hibernate.connection.driver_class:设置连接数据库驱动。 (2)hibernate.connection.url:设置所连接数据库服务

虽然我很菜 1639

避坑指南:DeepSeek Function calling流式输出中的常见问题与解决方案

本文深入探讨了在DeepSeek Function Calling中实现流式输出时常见的参数拼接、函数依赖管理和错误处理等核心挑战。针对流式响应中参数碎片化的问题,提供了健壮的参数拼接方案与状态管理策略。同时,文章详细阐述了如何管理函数调用顺序、处理条件性执行,并构建了分阶段的错误处理与重试机制,旨在帮助开发者构建稳定、高效的流式AI应用。

weixin_29062671的博客 203

利用hibernate反向自动创建数据库

可以封装成一个java工具类,利用hibernate反向自动创建数据库,方便以后开发,提高效率。 创建数据库范例: ①主类 package com.hzp.test; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class

larry_lv的专栏 534

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

oracle hibernate 自动创建表,利用hibernate的映射文件,自动生成oracle数据库表

第一种:利用hibernate根据映射文件生成表1、首先下载oracle的jdbc驱动包,本例子采用的oracle 11g,所以需要下载ojdbc6.jar版本。2、在class根目录下创建hibernate.cfg.xml文件,内容如下:/p>"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.source...

weixin_26763955的博客 364

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

用MyEclipse自动生成hibernate映射文件和数据库的实体类

以前我都是创建完数据库后,然后手动在myeclipse中一一创建对应的实体类,不仅费时间,而且还有可能出现字段名,数据类型不匹配的情况(在使用框架查找的时候就知道这到底有多坑人了),所以就有了下边的快速生成实体类的方法:1.myeclipse中:window---&gt;show view---&gt;DB Browser   2.打开DB Browser:右键MyEclipse Derby---...

qq_41564529的博客 465

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SSH利用Hibernate自动创建实体类(逆向工程)(MySQL数据库为例)

1.调出Data Source Explorer2.新建数据库链接,选择MySQL数据库,在Name选项可以对给链接重命名3.点击Next,再点击New Driver Definiton4.选择相应的数据库,在Driver name出可以给该链接重命名5.移除默认的链接驱动6.添加自己的数据库驱动7.将datebase改成自己的数据库名,填写密码,点击OK8.勾选Save password,点击T...

六月星海的博客 2801

idea从0开始使用hibernate完成增删改查

文章目录环境配置 环境配置 1.使用idea创建maven项目,添加相关依赖 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.1.0.Final...

远行的博客 1018

hibernate4.1 mysql反向生成实体类_MyEclipse Hibernate反向工程生成实体类

不废话,直接上步骤step1、Window -> Open Perspective -> MyEclipse Database Explorer 到DB Broswer界面step2、右键 -> New,新建一个数据库连接step3、创建一个java项目step4、给项目添加Hibernate Capabilities项目 -> 右键 -> MyEclipse -&g...

weixin_39804620的博客 151

SSH(spring springMVC +Hibernate)操作的详细步骤

1导入包(可以在官网下载 可以私聊我给你) 2.编写SpringMVC.xml 3.编写web.xml 4.创建jsp跳转到后台的类 (跳转成功实现了spring+springMVC) 创建DB Browser (如果有创建过,就不用创建了)(没有Browser在windows show vIew other 里找到) ...

weixin_30562507的博客 110

springboot中MySQL数据库配置--引入hibernate及配置--引入mybatis及application配置及利用hibernate自动建表

如果傘皮不能用代码改变世界,那就改变自己就好了~ 如果有所帮助,请给俺点赞,如果不可以的话,请把您的赞留给大神们,把下次一定留给俺,俺下次一定好好写(^ 狗头 ^)~ 文章目录一:MySQL数据库配置(1)application.yml文件配置(2)pom.xml文件引入MySQL连接依赖二:引入hibernate及配置(1)pom.xml引入hibernate依赖(2)application配置三:引入mybatis及application配置及利用hibernate自动建表(1)pom.xml文件引.

唐傘皮 1156

mybatis 自动生成integer_Mybatis如何自动生成数据库表结构总结

一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候。但有时候不想用代码生成器,也不想定义表结构,那怎么办?这个时候就会想到Hibernate,然后想到它的hibernate.hbm2ddl.auto配置项。所以手工创表的问题可以很方便的迅速用Hibernate来解决。 那有人问啦:就是不想用Hibernate才换的Mybatis,你这又兜回去了...

weixin_35033275的博客 355

SpringBoot使用Hibernate,实现自动创建数据库表【博客数据库设计】

我们准备设计博客,那就要设计数据库。 我们可以使用Hibernate来自动生成数据库。 博客数据库的结构: 实体类: 博客 Blog 博客分类 Type 博客标签 Tag 博客评论 Comment 用户 User 项目截图: 首先,在pom.xml中添加以下的一些依赖: <dependency> ...

南宫乘风-Linux运维-虚拟化容器-Python编程 ownit.top 1197

hibernate 导出数据库成功 在hibernate里面做数据库

还是在工具包下面    com.xie.util    建一个类    ExportDB package com.xie.util; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ExportDB {

ouwen_666的专栏 385

myeclipse自动生成hibernate映射文件

myeclipse自动生成hibernate映射文件 在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml配置文件匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了myecli

逝者如斯夫 8685

Hibernate 自动创建表结构

说起来还是对于Hibernate不够了解,到现在才发现Hibernate竟然有如此给力的功能,但同时又给像我这样对hibernate不够理解的人添加了很多烦恼,例如最近在开发测试一个定时任务的时候发现每次系统启动都会在一个task表中添加一个多余的字段,而且这个字段赋值不能为空,然后就反复各种折腾,(启动好了去数据库把多出来的这个字段干掉是可以继续测试的。。。。)最后程序调好了,但是无缘无故的添加

程序员随手笔记 1164
上一篇: 一个简单的hibernate程序
下一篇: hibernate中重写equals方法和hashCode方法
Fanhingkui
博客等级 码龄9年 1粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值