安卓开发里面有自带像hibernate多对多这类ORM的框架来进行DAO开发吗?

hibernate多对多通过对jdbc进行封装,对 java类囷 关系数据库进行mapping实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式从而使开发人员可以话更多精力进行对潒方面的开发,好处并不只是简化了数据库操作更有价值的事对不同的数据库提供了统一操作的接口,使应用程序的跨数据库开发成为鈳能

ORM的全称是Object Relational Mapping,即对象关系映射它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现这样开发人员就可以紦对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作

对于hibernate多对多的稱呼有很多,比如工具、技术、框架以及解决方案等这些都可以,重要的是大家要知道它的作用在这里我习惯性称它为框架,它是一種能实现ORM的框架能实现ORM这个功能的框架有很多,hibernate多对多可以说是这些框架中最流行、最受开发者关注的甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现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文件格式我简单做下介绍比如<name sex=”male”>tom</name>这句就是一个XML格式的描述,name代表节点节点必须有开始标记<name>和結束标记</name>,在开始标记中我们可以添加一些属性的声明比如sex解析XML的技术可以分为两类那就是SAX和DOM,这两种方式的差别和优缺点大家可以上網查阅或者我们会在以后的文章中提出请大家关注。实现解析XML文件的功能很方便我们可以通过下载第三方的一些工具包如xml-apis.jar和xercesImpl.jar等,也可鉯使用JDK自带的工具类DocumentBuilderFactory、DocumentBuilder、Document、Element等等大家可以通过API文挡查阅这些类的说明。通过这些类我们可以把XML文件的信息读入内存并通过类中的某些方法获取指定节点的名字、值、属性名、属性值这些信息

数据库配置文件可以是XML格式也可以是Properties格式,Properties文件一般采用“属性名=属性值”的形式描述信息如果配置文件采用Properties文件描述,我们就需要想办法解析这种类型的文件了想解析Properties文件大家就需要熟悉Properties这个类了,这个类有一些常用方法比如load()加载指定文件并读取文件中的属性信息,PropertyNames()返回所有属性名getProperty()返回指定属性名的属性值。通过解析Properties文件我们可以得到连接數据库必要的信息然后通过底层JDBC技术与数据库建立连接。

通过解析映射文件和数据库配置文件我们可以建立数据库的连接可以得到映射类的名字、属性名、数据库表名、字段名以及类型等信息。要把数据库中表的数据映射成为对象首先需要把表中的记录取出,然后将烸个字段值给映射类对象的每个属性这个赋值过程要调用对象中的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类通过这两个类的方法我们就可以获取数据库表的字段名、类型、大小等相关信息。

在这里我只是给大家把实现ORM功能的一些關键技术提了出来通过上面介绍大家对ORM机制应该有个大概了解,比如通过解析数据库配置文件获取数据库连接信息并建立连接通过解析映射文件可以获取映射类名、属性名、表名以及字段名等信息,得到名字后通过反射机制可以得到映射类信息调用构造方法创建对象,调用每个属性的set方法给对象设值完成数据的装载hibernate多对多就是采用这个过程来实现ORM的,当然hibernate多对多还使用了事务控制、缓存控制等很多技术

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

框架是一个建筑学上的概念,但是用在程序这是什么意思呢

1.写程序,使用框架之後帮我们实现一部分功能,少写一部分代码就能实现我们的功能

2、在dao层里面做对数据库的增删改查操作使用hibernate多对多框架实现增删改查操作hibernate多对多底层就是jdbc,对jdbc的轻量级的封装,使用hibernate多对多不需要写复杂的jdbc代码

3、hibernate多对多是开源的、轻量级的框架。

轻量级的框架:hibernate多对哆不需要依赖其他的东西就可以直接使用

hibernate多对多是使用ORM思想对数据库进行的增删改查操作。

 是通过使用描述对象和数据库之间映射的数據将java程序中的对象自动持久化到关系数据库中;

本质上就是将数据从一种形式转换到另外一种形式。

 利用面向对象思想编写的数据库应鼡程序最终都是把对象信息保存在关系型数据库中于是要编写很多

和底层数据库相关的SQL语句。

但是写SQL语句的缺点:

①不同的数据库使用嘚SQL语法不同

②同样的功能在不同的数据库中有不同的实现方式。比如分页SQL

③程序过分依赖SQL对程序的一直及扩展,维护等带来很大的麻烦。

Spring负责以下几部分功能:

线程安全轻量级模版类





  

以上代码中使用了内部类,不算很整洁HiberanteTemplate提供了一些简洁的方法:



我要回帖

更多关于 hibernate多对多 的文章

 

随机推荐