Hibernate基础映射

时间序列:R语言ARMA-GARCH模型 ARMA: #读入数据,并绘制时序图 d<-read.table("C:/Users/haha/Desktop/R/zuoye/1.txt") x<-ts(log(d),start = 1) 1: x的时间序列图: x<-ts(log(d),start = 1) plot(x) 2: 从上图可以看出x.dif序列值在0的附近波动,没... 阅读详情

在说Hibernate映射前,我们先来了解下对象关系映射 ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对这些对象的操作。我们来看一张图

通过该图,我们可以看出业务实体,在数据库中表现为关系数据,而在内存中表现为对象。应用程序处理对象很容易,但是很难处理关系数据。ORM做到了关系数据和对象数据之间的映射,可以通过映射关系自动产生SQL语句,在业务逻辑层和数据层之间充当桥梁。

Hibernate映射

 

Hibernate文件

  1.  映射类(*.java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。
  2.  映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。
  3.  数据库配置文件(*.properties/*.cfg.xml):它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。

 

基本映射:

具体看操作

1映射实体类

  1. //默认空构造函数的重要性  
  2. public class User {  
  3.   
  4.     public User() {  
  5.         // TODO Auto-generated constructor stub  
  6.     }  
  7.       
  8.     public User(String id,String name){  
  9.         this.id=id;  
  10.         this.name=name;  
  11.           
  12.     }  
  13.     private String id;  
  14.     public String getId() {  
  15.         return id;  
  16.     }  
  17.     public void setId(String id) {  
  18.         this.id = id;  
  19.     }  
  20.     public String getName() {  
  21.         return name;  
  22.     }  
  23.     public void setName(String name) {  
  24.         this.name = name;  
  25.     }  
  26.     public String getPassword() {  
  27.         return password;  
  28.     }  
  29.     public void setPassword(String password) {  
  30.         this.password = password;  
  31.     }  
  32.     public Date getCreateTime() {  
  33.         return createTime;  
  34.     }  
  35.     public void setCreateTime(Date createTime) {  
  36.         this.createTime = createTime;  
  37.     }  
  38.     public Date getExprieTime() {  
  39.         return exprieTime;  
  40.     }  
  41.     public void setExprieTime(Date exprieTime) {  
  42.         this.exprieTime = exprieTime;  
  43.     }  
  44.   
  45.     private String name;  
  46.     private String password;  
  47.     private Date createTime;  
  48.     private Date exprieTime;  
  49.   
  50. }  
//默认空构造函数的重要性
public class User {

	public User() {
		// TODO Auto-generated constructor stub
	}
	
	public User(String id,String name){
		this.id=id;
		this.name=name;
		
	}
	private String id;
	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 getExprieTime() {
		return exprieTime;
	}
	public void setExprieTime(Date exprieTime) {
		this.exprieTime = exprieTime;
	}

	private String name;
	private String password;
	private Date createTime;
	private Date exprieTime;

}

实体类的设计原则:

* 实现无参的默认的构造函数

* 提供一个标识

*建议不要使用final修饰实体类(因为采用load延时加载数据的时候会继承实体类生成代理对象)

*建议为实体类生成getter和setter方法(如果不使用,需要用属性field标识)

2映射文件User.hbm.xml

  1. <?xml version="1.0"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.  <!--1、class和table的映射,name属性是实体名,table属性是表名(table可省略,则name即是映射的表名)-->   
  7.     <class name="com.bjpowernode.hibernate.User">  
  8.     <!-2、主键映射,name属性是实体类的标识符属性,对应table的主键,即用column表示(column同样可省略)-->    
  9.         <id name="id" access="field">  
  10.             <!--主键生成器,class属性表示生成策略,根据不同的需求选择-->     
  11.             <generator class="uuid"/>  
  12.         </id>  
  13.          <!--3、其他属性的映射 property-->    
  14.         <property name="name" length="40" unique="true" />  
  15.         <property name="password"/>  
  16.         <property name="createTime"/>  
  17.         <property name="exprieTime"/>  
  18.         <filter name="testFiltere"  condition="id < :myid"></filter>  
  19.     </class>  
  20. </hibernate-mapping>  
<?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>
 <!--1、class和table的映射,name属性是实体名,table属性是表名(table可省略,则name即是映射的表名)--> 
	<class name="com.bjpowernode.hibernate.User">
	<!-2、主键映射,name属性是实体类的标识符属性,对应table的主键,即用column表示(column同样可省略)-->  
		<id name="id" access="field">
			<!--主键生成器,class属性表示生成策略,根据不同的需求选择-->   
			<generator class="uuid"/>
		</id>
		 <!--3、其他属性的映射 property-->  
		<property name="name" length="40" unique="true" />
		<property name="password"/>
		<property name="createTime"/>
		<property name="exprieTime"/>
		<filter name="testFiltere"  condition="id < :myid"></filter>
	</class>
</hibernate-mapping>

3hibernate.cfg.xml配置文件

  1. <!DOCTYPE hibernate-configuration PUBLIC  
  2.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5. <hibernate-configuration>  
  6.     <session-factory>  
  7.         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
  8.         <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernast_test</property>  
  9.         <property name="hibernate.connection.username">root</property>  
  10.         <property name="hibernate.connection.password">hanhan</property>  
  11.         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.         <!--打印sql-->  
  13.         <property name="hibernate.show_sql">true</property>  
  14.         <!--在没有表的时候,创建sessionfactroy 时,就会去创建表(update的方式,不删除原有数据)-->  
  15.         <property name="hibernate.hbm2ddl.auto">update</property>  
  16.           
  17.     <mapping  resource="com/bjpowernode/hibernate/User.hbm.xml"/>  
  18.     </session-factory>  
  19. </hibernate-configuration>  
	<!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/hibernast_test</property>
			<property name="hibernate.connection.username">root</property>
			<property name="hibernate.connection.password">hanhan</property>
			<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
			<!--打印sql-->
			<property name="hibernate.show_sql">true</property>
			<!--在没有表的时候,创建sessionfactroy 时,就会去创建表(update的方式,不删除原有数据)-->
			<property name="hibernate.hbm2ddl.auto">update</property>
			
		<mapping  resource="com/bjpowernode/hibernate/User.hbm.xml"/>
		</session-factory>
	</hibernate-configuration>

Hibernate的主键生成策略种类

手动:Assigned

Hibernate主动:uuid

数据库交互:

需要和数据库交互以生成id的:guid、identity、sequence、native、foreign

说明:需要和数据库交互生成,需要经过一次查询才能生成

Guid,identity:MySQL,SQLserver的生成方式

sequence:Oracle,db2的生成方式,自增序列

native:identity+sequence,跨平台

foreign:只适用基于共享主键的一对一关联映射的时候使用。即一个对象的主键是参照的另一张表的主键生成的。 

总结:

Hibernate的基本映射:重点是对主键生成策略的认识,根据不同数据库选择不同的方式,重要理解。

伺服电机开发实战指南 伺服电机作为工业自动化的核心部件,正经历前所未有的技术革新。本文从基础原理出发,详细介绍了伺服电机的分类、工作原理和特性,分析了伺服电机系统组成与核心部件,探讨了企业级开发技术,包括控制算法、通信协议和故障诊断等高级功能,并提供了实战案例分析,从行业应用到具体开发步骤,展示了伺服电机的工程实现。通过深入理解伺服电机的原理、掌握开发技术、学习应用案例,可以实现伺服系统的高性能开发与应用。 阅读详情

相关推荐

有限元分析必看:如何用ANSYS检查关键区域的网格质量(附操作截图)

本文聚焦有限元分析中决定仿真精度的关键环节,详细讲解了如何利用ANSYS Workbench对关键区域进行网格质量检查与优化。文章提供了从思维转变、实战操作到指标解读的完整流程,强调通过命名选择、Worksheet过滤器等工具实现定向检查,并给出了针对结构分析的关键区域网格质量阈值建议,帮助工程师提升仿真结果的可靠性与效率。

weixin_29200741的博客 470

【hibernate进阶】hibernate基本映射

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,本质上就是将数据从一种形式转换到另外一种形式。hibernate作为一个ORM框架的代表,在实现ORM中,就是靠hibernate的基本映射来实现的。 常用的hibernate的几种映射:基本映射和关系映射。

陈晓婵 7566

ESP32驱动GC9A01圆形屏实战:Arduino平台LVGL移植与图像显示优化

本文详细介绍了在Arduino平台上使用ESP32驱动GC9A01圆形屏的实战指南,包括硬件连接、LVGL移植与图像显示优化。通过SPI配置、LVGL库安装和双缓冲机制等技巧,帮助开发者快速实现高效显示效果,适用于智能家居控制面板等应用场景。

weixin_29182481的博客 738

Hibernate之映射

基础映射 实体映射技术作为类与表之间的联系纽带,在ORM实现中起着至关重要的作用。对于Hibernate用户而言,映射关系更多地体现在配置文件的维护过程中。Hibernate选用XML作为映射配置文件的基础形式。 实体映射的核Hibernate中,类表映射主要包括: 类/表映射<class name="ClassName" (1)

a3060858469的博客 537

让AI镜头“活”起来:22个核心运镜提示词,告别视频画面呆板

介绍了22种影视级镜头语言的AI提示词用法。内容涵盖推轨/后拉镜头等距离变化技巧、横摇/俯仰等方向控制手法、环绕/升降等空间位移方式,以及POV视角等特殊构图。

weixin_43489601的博客 6291

Informer:比Transformer更有效的长时间序列预测

目录 AAAI 2021最佳论文:比Transformer更有效的长时间序列预测 Background Why attention Methods:the details of Informer Solve_Challenge_1:最基本的一个思路就是降低Attention的计算量,仅计算一些非常重要的或者说有代表性的Attention即可,一些相近的思路在近期不断的提出,比如Sparse-Attention,这个方法涉及了稀疏化Attention的操作,来减少Attention计算量,然后涉及的

To be a better man 1万+

Hibernate映射Set

Hibernate映射Set,其中Set集合中可以放我们自定义的类,也可以是像String、Long、Date等能够直接映射到数据库表字段上的类型,后者相对来说比较简单。 以Team类为例: package bean; import java.util.Set; public class Team { private long id; private String name; p

jialinqiang的专栏 3010

解决Surface更新后Bitlocker无限循环的问题

在Surface系统更新以后,出现要求输入Bitlocker恢复密钥的问题。已经输入正确密钥以后,依然无法正常进入Windows操作系统,一旦重启依然循环Bitlocker要求输入密钥的界面。 一旦到登录界面,点击“登录”之后又跳转回登录界面.,但就是无法进入桌面。 解决方案: 拒绝暴力重装!这个问题是Bitlock把盘给锁了,所以要解锁 重启之后,直接点击右下角“跳过这个驱动器” 选择“疑难解答”,然后进入命令提示符 先查看判断现在是不是被锁了: 输入: manage-bde -status c

premierapp的博客 1万+

Hibernate映射Map

Hibernate映射Map,比较简单的情况就是Map的value为String、Long、Date等Hibernate支持的类,较为复杂的就是自定义的类。下面介绍映射Map时这两种情况,至于更加复杂的情况以后再说。 以Team类为例: 1.简单情况:Team中含有类型为Map的students属性,Long对应学生的学号,String对应学生的姓名。Team类如下: package b

jialinqiang的专栏 9849

国科大学习资料--遥感原理集图像处理(尤红建)--2019年期末考试

国科大学习资料–遥感原理集图像处理(尤红建)–2019年期末考试 国科大学习资料–遥感原理集图像处理(尤红建)–2019年期末考试 国科大学习资料–遥感原理集图像处理(尤红建)–2019年期末考试 ================================================================== ================================================================== ==============

无名何许人的博客 1471

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 436

Hibernate单实体映射

在这种情况下,我们可以使用字段访问方式(field access)或者属性访问方式(property access)来设定Hibernate访问持久化类的属性的方式。Hibernate 持久化类属性与数据库表字段不对称的映射是指在 Java 对象持久化过程中,实体类属性与数据库表字段之间的映射关系不是一一对应的。在这个例子中,我们为持久化类提供了setId()和getId()方法,以及setName()和getName()方法,Hibernate会优先使用这些方法来访问和修改属性值。INSERT SQL;

LIUCHANGSHUO的博客 1013

【ComfyUI】SD1.5 + ControlNet 边缘检测融合动漫转真人

本文介绍了一个基于ComfyUI的动漫转真人图像生成工作流,通过多模型协同实现高质量的二次元图像转换。该工作流集成了Canny线稿预处理、ControlNet结构控制、VAE编码解码和人脸精细化处理等核心环节,采用majicmixRealistic_v7作为主模型,配合yolov8、SAM等辅助模型。整个流程包含11个标准化步骤,从图像输入、预处理到最终超分输出,通过ControlNet引导和CLIP语义控制确保生成图像的写实感和结构准确性,特别针对人脸区域进行专业优化,最终可输出高分辨率写实人像。

Mr数据杨 1132

HIbernate映射

HIbernate映射映射组成关系 Hibernate 把持久化类的属性分为两种: 值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 实体(entity)类型: 有 OID, 可以被单独持久化, 有独立的生命周期 显然无法直接用 property 映射 pay 属性 Hibernate 使用 < component> 元素来映射组成关系

zhaojianyin 334

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Hibernate基本映射

映射文件的基本结构 hibernate-mapping元素 位于映射文件顶层的是<hibernate-mapping>元素,该元素定义了XML配置文件的基本属性,即它所定义的属性在映射文件的所有节点中都有效。 chema 指定所映射的数据库模式的名称。若指定该属性, 则表名会自动添加该 schema 前缀;Oracle数据库,是指用户名,其他数据库一般需要; catalog 指定...

茨时代べ 的博客 561

老版QQ原生表情gif动态

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

Hibernate的映射类型

1. 概述 Hibernate映射类型分为两种:内置映射类型和客户化映射类型。 内置类型负责把一些常见的java类型映射到相应的SQL类型。String到varchar的映射如图1所示: 图1 hibernate内置类型string完成String到varchar的映射 客户化映射类型可以把用户定义的java类型映射到数据表的相应字段。通过实现Hibernate的UserType接

hi! 1164

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hibernate几种映射类型

飘飘悠悠 7858

【Hibernate】——多对一映射

什么是映射?            小编这里总结一年Hibernate的关联映射,这篇博文主要讲多对一的关联映射。            首先要知道什么是映射?简单的说,一个萝卜一个坑就是一种映射关系。数学上来说,y = ax^2 + bx + c,就 是x到y 的映射。            Hibernate的基本映射?            而hib

努力成为自己的榜样。 851

Hibernate之深入Hibernate映射

Hibernate映射即完成持久化类与关系数据库中一一对应,而要想将一个普通类变成一个持久化类,一般是通过两种方法,一种是通过持久化注解,另外就是通过配置文件来完成,这种用的比较少,而注解在一般用的比较多。 再使用注解的方法的时候,一般是有几个不可少的注解需要我们完成。一般我们完成一个最简单的数据库操作就是构建一个数据库创建一个表并完成对这个表的增删查改等操作,而这就需要我们完成实体类和数据库表...

qq_40133908的博客 291

【hibernate】基础映射

【引言】             Hibernate的一个重要的功能就是映射,它能够在对象模型和关系模型之间转换,是面向对象编程思想提倡使用的,这样开发人员就只需要关系对象模型中代码的编写。对象和关系数据库之间的映射通常是由XML文件来定义。 使用Hibernate编程时首先要连接数据库,所以首先要去查看xml中有关数据库连接的配置,根据文档的配置创建sessionFactory,再由sess

邢玉 傻傻的坚持,总有一天会成功! 501

hibernate组件映射

hibernate组件映射也就是包含映射,关系犹如汽车(Car)与车轮(Wheel) 1、创建实体类Wheel.java package cn.itcast.a; public class Wheel { private int count; private int size; public int getCount() { return count; } public voi

xiaoxiaoxinhuan的博客 351

hibernate中视图的映射

1.数据库已经建立视图,hibernate只是把视图当作普通的表来映射。 视图VIEW_MER_INST_POS: select MER.DAYS_MERCHT_ID MER_ID,        INST.DAYS_MERCHT_ID INST_ID,        POS.POS_ID POS_ID from tbl_days_mercht_attr MER,      tbl_d

一个人有了信仰,不管成不成功,至少不会迷茫。 944

Hibernate之集合映射

我们继续说Hibenrnate中的最后一个映射关系——集合映射。集合映射开发过程中应用的比较少,我们只做一下 简单的介绍,在java中有四种类型的集合,分别是set、list、array、map。   区别:         是否可重复 是否有序 Set 否 否 List

区块链领域填坑的java程序猿 851

hibernate多对多映射

hibernate的多对多映射就好比项目(Project)与开发人员(Developer),他们之间的关系用中间表(t_relation)联系起来。中间表的字段分别为两个表的外键d_id与p_id。 1、创建实体类Project.java package com.itcast.b; import java.util.HashSet; import java.util.Set; public

xiaoxiaoxinhuan的博客 345

Hibernate 映射类型

Hibernate 映射类型 第一节:基本类型映射                                       实例分析: package com.java1234.model; import java.sql.Blob; import java.util.Date; public class Book { private int id; pr...

qq_40135955的博客 679

Hibernate 基本映射与组件映射

Hibernate 基本映射一对一  一个账户一个地址Account             Address主键表              外键表 [在Address 对应的表中建一个外键]独立主键:One: Account主键表如何找到外键的一方呢?通过property-ref指定,Many:Address  unique=”true”/>外键表如何

lilp_ndsc的专栏 1763
上一篇: 菜鸟学习Spring——60s学会Spring与Hibernate的集成
下一篇: 搭建Struts2开发环境
Sakura_sql
博客等级 码龄12年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值