ORM框架通过映射(反射)获取数据库的数据

发表于:2016-12-09 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:rickzhu    来源:51Testing软件测试网采编

  ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
  只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有四种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink。
  ORM是通过使用描述对象和数据库之间映射的元数据,在我们想到描述的时候自然就想到了xml和特性(Attribute).目前的ORM框架中,Hibernate就是典型的使用xml文件作为描述实体对象的映射框架,而大名鼎鼎的Linq则是使用特性(Attribute)来描述的。
  元数据(Metadata)
  是 描述其它数据的数据 (data about other data),或者说是用于提供某种资源的有关信息的结构数据(structured data)。元数据是描述信息资源或数据等对象的数据,其使用目的在于:识别资源;评价资源;追踪资源在使用过程中的变化;实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找、一体化组织和对使用资源的有效管理。
  对映射获得数据库的数据放大做简单的介绍
  创建一个数据表相对应的类Student   包含:属性stuid、stuname、tid以及相对应的set/get方法,右侧是数据库对应的表信息
  下面是数据库个字段对应的数据类型
  1.通过映射获取student类的实例
  path表示Student类的全类名      object表示通过映射(反射)获得的student的实例
  2.通过JDBC方法获取数据连接、执行sql语句、获得查询结果集
  步骤:加载Driver驱动、获取数据库连接connection、通过连接获得prepareDstatement对象、Resultset接受执行sql语句的结果集
  ps.setInt(1,3)----设置查询stuid=3;
  3.遍历结果集
  通过rs.getMetaDate()(返回数据类型是ResultSetMetaData)获取结果集的元数据 ,再由元数据的getColumnCount()方法获得数据库表Student的字段个数
  通过循环逐一获得字段对应的数据,这里注意在循环过程中下标从1开始,下标最大值等于字段的个数
  获得字段对应的set方法
  写一个字符串拼接方法,获得给定字符串的set方法
  例如:传入name  返回setName
  循环获得数据
  通过元数据的getColumnName(int index)(返回结果是String类型)方法,获得字段的名称;再通过元数据的getColumnTypeName(int index)(返回值String)获得
  字段对应的数据类型,将字段名传入写好的上述写好的方法setMethod(String name)中获得字段对应的set方法名称
  判断字段的数据类型,调用对应的set方法
  Student实体类的getClass()方法,运行时获得Student类,通过类的getMethod(setMethod,Integer.class)(以integer类型距离)方法获得set方法,通过invoke()传入Student的实体类和字段对应的值re.getInt(column_name)执行set方法
  执行打印结果
  将Student的实体类转换成Student类型,并打印出来
  ============================================================================================
  循环打印出对应的数据类型
  元数据的getColumnType(int index)返回字段数据对应的字段长度
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号