对象只能存在于内存中 ,而内存中不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中 目前,关系数据库冉冉是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。
持久化是将Java虚拟机对象持久保存,而不是将数据库映射为对象,通常数据的存储是用数据库实现的;当然,如果你有更好的存储系统,也可以映射到系统中的存储设备中,这可能需要你自行开发持久化框架来进行持久化一个Java对象。如果是持久化到数据库,现在已经涌出许多ORM框架,像Hibernate,轻量级的ibatis,都是不错的选择。
现在大部分数据库还是关系型的,而Java是面向对象的语言,很明显将一个对象型的数据如何保存到关系型数据库中呢?这就要借助强大的ORM框架解决这个问题。
比如ibatis框架,使用时只要配置好sqlMapConfig及相应的sqlMap配置文件,只要保存对象或更新对象及可,编程时不再需要写sql才能操作数据,查找时同样查到的是对象数据而不是关系型数据,通过对象set(para),get()方法插入及取得对应数据,Hibernate也是同样的,这里不再祥述,现在网上资料及相关书籍中有很多这样的讲解,了解、熟悉甚至精通这些需要研读相关书籍,有兴趣的话最好研读源码,以上都是开源的框架,网上即可下到
,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对象中,这样可以省下我们大量的联合查询时间,并且代码得到了统一,完全变的符合对象化的操作规范.
java为什么需要持久化?
最新推荐文章于 2018-12-03 11:52:53 发布