java为什么需要持久化?
java为什么需要持久化?最好举例说明我经常看到JAVA持久化这个词,很纳闷,不知是干什么的。如果说只是把数据库映射为对象,用持久这个词有点牵强了吧?另外,持久化仅仅是用...
java为什么需要持久化?最好举例说明
我经常看到JAVA持久化这个词,很纳闷,不知是干什么的。如果说只是把数据库映射为对象,用持久这个词有点牵强了吧?另外,持久化仅仅是用在数据库上吗? 展开
我经常看到JAVA持久化这个词,很纳闷,不知是干什么的。如果说只是把数据库映射为对象,用持久这个词有点牵强了吧?另外,持久化仅仅是用在数据库上吗? 展开
4个回答
展开全部
持久化是将Java虚拟机对象持久保存,而不是将数据库映射为对象,通常数据的存储是用数据库实现的;当然,如果你有更好的存储系统,也可以映射到系统中的存储设备中,这可能需要你自行开发持久化框架来进行持久化一个Java对象。如果是持久化到数据库,现在已经涌出许多ORM框架,像Hibernate,轻量级的ibatis,都是不错的选择。
现在大部分数据库还是关系型的,而Java是面向对象的语言,很明显将一个对象型的数据如何保存到关系型数据库中呢?这就要借助强大的ORM框架解决这个问题。
比如ibatis框架,使用时只要配置好sqlMapConfig及相应的sqlMap配置文件,只要保存对象或更新对象及可,编程时不再需要写sql才能操作数据,查找时同样查到的是对象数据而不是关系型数据,通过对象set(para),get()方法插入及取得对应数据,Hibernate也是同样的,这里不再祥述,现在网上资料及相关书籍中有很多这样的讲解,了解、熟悉甚至精通这些需要研读相关书籍,有兴趣的话最好研读源码,以上都是开源的框架,网上即可下到
现在大部分数据库还是关系型的,而Java是面向对象的语言,很明显将一个对象型的数据如何保存到关系型数据库中呢?这就要借助强大的ORM框架解决这个问题。
比如ibatis框架,使用时只要配置好sqlMapConfig及相应的sqlMap配置文件,只要保存对象或更新对象及可,编程时不再需要写sql才能操作数据,查找时同样查到的是对象数据而不是关系型数据,通过对象set(para),get()方法插入及取得对应数据,Hibernate也是同样的,这里不再祥述,现在网上资料及相关书籍中有很多这样的讲解,了解、熟悉甚至精通这些需要研读相关书籍,有兴趣的话最好研读源码,以上都是开源的框架,网上即可下到
展开全部
Java只是一种编程语言,它能做N多事情。【Java是做事情的】
持久化是一种概念,意思是将数据持久化:比如存入数据库,写入到硬盘的文件中。可以永久(永久是相对的)保存。【持久化是Java能做的事情中的一种】
无论什么语言开发的cs(客户端<=>服务器)软件,bs(浏览器<=>服务器)软件,还是纯单机桌面软件,编程语言(包括Java)所能做的,只是操作数据,处理数据,与用户交互,如果不把这些数据保存到(持久化)某种介质(数据库,文件...),等关机再开机后,或者重新打开软件后,上次的数据就丢失了。
如果持久化数据后,重新打开软件,就可以读取以前持久化的数据,恢复软件的状态,继续之前的工作……
总而言之,并不是开发语言(如:Java)需要持久化,而是数据需要持久化,Java是将数据持久化的一种手段(你用什么语言开发,就用什么语言将数据持久化)。
持久化是一种概念,意思是将数据持久化:比如存入数据库,写入到硬盘的文件中。可以永久(永久是相对的)保存。【持久化是Java能做的事情中的一种】
无论什么语言开发的cs(客户端<=>服务器)软件,bs(浏览器<=>服务器)软件,还是纯单机桌面软件,编程语言(包括Java)所能做的,只是操作数据,处理数据,与用户交互,如果不把这些数据保存到(持久化)某种介质(数据库,文件...),等关机再开机后,或者重新打开软件后,上次的数据就丢失了。
如果持久化数据后,重新打开软件,就可以读取以前持久化的数据,恢复软件的状态,继续之前的工作……
总而言之,并不是开发语言(如:Java)需要持久化,而是数据需要持久化,Java是将数据持久化的一种手段(你用什么语言开发,就用什么语言将数据持久化)。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想,JAVA的持久化(persistent)是为了解决关系型数据库和对象型编程语言之间的冲突,持久化可以将记录转化为对象,在对象数据库出现并流行之前,持久化是解决并避免对象型编程操作数据的非对象操作的最好途径.JAVA是一个完全面向对象的语言,如果你拿JAVA直接操作关系数据库,你会发现你不得不写出很多Bad smell的代码来解决数据库和语言之间的沟通问题.举个简单的例子,有2个表student(id,name,classid),class(id,name)如果需要找到id为1的学生所对因的班级名称,你需要在你的JAVA代码中执行下面的非对象化(也就是结构化)查询操作:
select class.name from class,student where student.id=1 and student.classid=class.id
而通过持久化的代码可以写成下面的形式:
student.queryStudent(1).getclass();
在持久化代码中,班级通过one to many映射被自动映射到student对象中,这样可以省下我们大量的联合查询时间,并且代码得到了统一,完全变的符合对象化的操作规范.这个就是我感觉持久化带来的最大好处了.
个人看法,不喜勿怪呵呵~,enjoy it~
select class.name from class,student where student.id=1 and student.classid=class.id
而通过持久化的代码可以写成下面的形式:
student.queryStudent(1).getclass();
在持久化代码中,班级通过one to many映射被自动映射到student对象中,这样可以省下我们大量的联合查询时间,并且代码得到了统一,完全变的符合对象化的操作规范.这个就是我感觉持久化带来的最大好处了.
个人看法,不喜勿怪呵呵~,enjoy it~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看懂你的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询