用户登录
用户注册

分享至

hibernate orm xml

  • 作者: QQ3545558
  • 来源: 51数据库
  • 2021-01-24
从ORM名字中就可以看出其原理:参照mapping,将object转换成sql语句,然后持久化到RDB中。

mapping记录object与RDB(表)的映射关系;这种映射关系可以是一个xml文件或者注解。不过不同的ORM产品功能以及复杂度不一样,hibernate属于重量级,而ibatis则是轻量级。



  技能特长这个恐怕只有你自己最清楚了,不过建议看看你的像投什么职位技能和特长就针对那个写,比如编辑,你就可以写特长是写作之类的;
发展意向的话,就要跟你自己想要招的职位进行描写了,大概类似于职业规划之类的。比如可以写写你想往编辑方向发展,早期可以先做个记者写手积攒经验之类的
你百度一下职业规划很多的



  在目前来看,大多数语言都是基于面向对象的,在项目不同的层次,都是以对象来传递数据,而现在的数据库系统都是关系型数据库。所以我们在进行数据库操作时,比如向数据库表中添加一条记录,就会遍历对象的的每个属性进行添加操作。如果使用Hibernate,那么我们就可以直接传递一个对象给它,由Hibernate管理、解析,执行相应的SQL操作。
那么Hibernate是怎样实现呢?主要是依据反射机制。
现在以一次数据库查询操作分析Hibernate实现原理。
假设有一个用户表(tbl_user),表中字段有id,name,sex。同时有一个实体类(User)与其相对应,查询语句是: select * from User。
1.在项目启动时,Hibernate配置文件中的内容已经存储在容器中,存储着表与实体中的关系。
2.在执行select * from User 时,会根据反射机制先找到User的全路径名称,进而找到容器中User对应的配置。
3.由于配置文件中的实体属性与数据库中的字段是对应的,Hibernate会将select * from User 这个hql语句根据不同的数据库方言解析成不同的SQL语句(select * from tbl_user)。
大致过程就是这样,当然,器内部实现的具体过程是比较复杂的,在使用Hibernate进行数据库操作时,应注意级联、延迟加载、缓存的使用。



  东方标准国际软件专业讲师,曾经负责过的重大的大型项目包括:全军武器装备 质量管理系统、全军办公自动化系统、日本ntt电信管理系统等。主要著作包括 《asp.net开发答疑200问》《asp.net开发实例导航》等。毕业于北京大学计算 机专业。 1. 什么是orm orm的全称是object relational mapping,即对象关系映射。它的实现思想就是 将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可 以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人 员以面向对象的思想来实现对数据库的操作。 2.什么是hibernate 对于hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都 可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能 实现orm的框架。能实现orm这个功能的框架有很多,hibernate可以说是这些框 架中最流行、最受开发者关注的,甚至连jboss公司也把它吸收进来,利用它在 自己的项目中实现orm功能。 3.orm的实现原理 现在在java领域大家对hibernate的讨论很多,比如它的优缺点、如何应用、错 误如何解决以及把它和struts/spring等框架相结合作为整个系统的解决方案。 在这里我想和大家探讨一些更深层次的话题,那就是hibernate是如何实现orm的 功能?如果让我们自己开发一款实现orm功能的框架需要怎么做?其实这些问题 就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们 也能够开发出自己的一款orm框架。会使用 hibernate的开发人员都知道,在使 用它实现orm功能的时候,主要的文件有:映射类(*.java)、映射文件 (*.hbm.xml)以及数据库配置文件(*.properties或*.cfg.xml),它们各自的 作用如下。 ⑴映射类:它的作用是描述数据库表的结构,表中的字段在类中被描述成属性, 将来就可以实现把表中的记录映射成为该类的对象。 ⑵映射文件:它的作用是指定数据库表和映射类之间的关系,包括映射类和数据 库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对 应关系等。 ⑶数据库配置文件:它的作用是指定与数据库连接时需要的连接信息,比如连接 哪中数据库、登录用户名、登录密码以及连接字符串等。 在这三种主要的文件中,映射类为普通java源文件、映射文件为xml格式、数据 库配置文件为properties格式或者是xml格式。想理解“映射” 首先我们需要知 道如何解析这三种文件,即解析xml格式文件、解析properties格式文件和解析 java类文件。下面我们来分别探讨一下如何实现这些文件的解析。 ⑴如何解析xml文件 前面我们说过映射文件是xml格式,数据库配置文件也可以是xml格式,因此如果 能解析xml文件我们就可以获取这两个文件的信息。xml文件格式我简单做下介绍 ,比如tom这句就是一个xml格式的描述,name代表节点,节点必须有开始标记和 结束标记,在开始标记中我们可以添加一些属性的声明比如sex。解析xml的技术 可以分为两类那就是sax和dom,这两种方式的差别和优缺点大家可以上网查阅或 者我们会在以后的文章中提出,请大家关注。实现解析xml文件的功能很方便, 我们可以通过下载第三方的一些工具包如xml-apis.jar和 xercesimpl.jar等, 也可以使用jdk自带的工具类documentbuilderfactory、documentbuilder、 document、element等等,大家可以通过api文挡查阅这些类的说明。通过这些类 我们可以把xml文件的信息读入内存并通过类中的某些方法获取指定节点的名字 、值、属性名、属性值这些信息。 ⑵解析properties文件 数据库配置文件可以是xml格式也可以是properties格式,properties文件一般 采用“属性名=属性值”的形式描述信息。如果配置文件采用properties文件描 述,我们就需要想办法解析这种类型的文件了。想解析properties文件大家就需 要熟悉properties这个类了,这个类有一些常用方法比如,load()加载指定文件 并读取文件中的属性信息,propertynames()返回所有属性名,getproperty () 返回指定属性名的属性值。通过解析properties文件我们可以得到连接数据库必 要的信息,然后通过底层jdbc技术与数据库建立连接。 ⑶解析java类文件 通过解析映射文件和数据库配置文件我们可以建立数据库的连接,可以得到映射 类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数 据映射成为对象,首先需要把表中的记录取出,然后将每个字段值给映射类对象 的每个属性,这个赋值过程要调用对象中的set方法。我们现在通过映射文件只 知道类名和属性名,如何根据类名和属性名调用相应的set和get方法,是一个关 键问题。在java中有一种机制叫反射机制,使用这种机制我们可以得到类的信息 ,包括类只用的修饰符、方法、属性、继承的父类以及实现接口等信息。反射机 制相关的类有class、field、method以及 constructor等。通过class的 getfields()、getmethods()和getconstructors()方法得到相应的属性、方法和 构造方法。通过field类的getname()、gettype()和getmodifiers()方法得到相 应的属性名、属性类型、属性修饰符信息。通过method类getreturntype()可以 获取方法的返回类型,invoke()方法可以根据给定的方法名和参数值执行对象中 对应的方法。我们可以首先通过以上方法获取类中的属性名,然后拼写成setxxx 和getxxx方法名,最后根据方法名执行对应的方法,将数据库数据加载到对象中 。 此外要实现hibernate机制还会涉及到一个技术点,那就是如何获取数据库的相 关信息。要实现这个功能,就需要大家了解jdbc的 databasemetadata类和 resultsetmetadata类,通过这两个类的方法我们就可以获取数据库表的字段名 、类型、大小等相关信息。



  利用反射原理,将实体类中的字段按照xml配置或者annotation解析成一条或者多条sql语句,然后放入数据库执行,说的简单点,就是这么个原理,但是内部实现比较复杂
软件
前端设计
程序设计
Java相关