服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java 数据对象(jdo)介绍(1)

介绍

java 数据对象 (jdo) is 是一个存储java对象的规范.   它已经被jcp组织定义成jsr12规范。jdo的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范。规范的两个主要目的是提供数据处理和访问机制的api以及允许规范的实现作为应用服务器的一部分。

jdo 和 jdbc

jdbc和jdo都是java调用数据库的apis。区别在于,他们访问数据存储的具体方法不同。jdbc提供了一种非常好的机制,它可以使应用程序代码与具体的数据库厂商和数据库位置无关。在大多数情况下数据存储使用的是关系数据库。但是当使用jdbc驱动运行在一个非关系数据库时就不是很好了。而对于jdo来说,运行在它之下的数据库就可以是一个关系数据库,面向对象的数据库或者其他完全不同的数据库。在jdo运行于关系数据库之上时,它可以通过jdbc很好的完成数据存储。而这一切对于开发人员来说都是透明的,所有实现都有jdo本身来完成。

jdbc不支持面向对象的数据库表示。jdbc数据库表示完全围绕关系数据库模型。这常常导致书写代码时在应用程序和数据库之间存在一个中间层。这个层的作用也许是分解java对象。分解java对象的过程会对使用的对象稍作改变,这样对象才能存储到关系数据库之中。同样的必须存在一种机制来把数据库中的记录转换成适当的java对象。jdo与jdbc刚好相反,他的数据库标示完全面向对象。这种机制并不新奇,在一些面向对象数据库中已经使用了这种机制。

jdbc的查询语言一般都是用sql。jdo的查询语言看起来与java更接近。使用jdo无需再专门学习一种查询语言比如sql。如果你会用java那么你就能够使用jdo的查询语言。

执行

jdo规范定义了jdo实现的接口已经jdo实现的内容。sun提供了一个jdo规范的参考实现,但是在2002年5月份发布的版本中它并没有完全实现规范中所要求的内容。还有众多的厂商提供的jdo实现可以使用。在下面的表格中列出了一部分。

 

厂商

产品

solarmetric

kodo jdo

prismtech

openfusion java data objects

signsoft

intellibo

poet

fastobjects

api

javax.jdo.spi.persistencecapable

任何被jdo实现控制的类都必须扩展persistencecapable接口。任何扩展persistencecapable接口的类的实例都可以看作是一个“jdo实例”。这个接口定义了jdo实现使用的方法来控制类的实例。

    public abstract javax.jdo.persistencemanager jdogetpersistencemanager();    public abstract void jdoreplacestatemanager(javax.jdo.spi.statemanager)             throws securityexception;    public abstract void jdoprovidefield(int);    public abstract void jdoprovidefields(int[]);    public abstract void jdoreplacefield(int);    public abstract void jdoreplacefields(int[]);    public abstract void jdoreplaceflags();    public abstract void jdocopyfields(object, int[]);    public abstract void jdomakedirty(string);    public abstract object jdogetobjectid();    public abstract object jdogettransactionalobjectid();    public abstract boolean jdoisdirty();    public abstract boolean jdoistransactional();    public abstract boolean jdoispersistent();    public abstract boolean jdoisnew();    public abstract boolean jdoisdeleted();    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager);    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager, object);    public abstract object jdonewobjectidinstance();    public abstract object jdonewobjectidinstance(string);    public abstract void jdocopykeyfieldstoobjectid(object);    public abstract void jdocopykeyfieldstoobjectid(            javax.jdo.spi.persistencecapable.objectidfieldsupplier, object);    public abstract void jdocopykeyfieldsfromobjectid(            javax.jdo.spi.persistencecapable.objectidfieldconsumer, object);    

通常会有一个由jdo实现厂商提供的工具来完成普通的java类到“jdo实例”类的转化。这个工具可能通过不同的方法来实现。第一种方法是通过字节码增强器来实现。一个jdo字节码增强器把普通的java类转换成“jdo实例”类的过程就是把扩展persistencecapable接口的方法的代码加到类中。第二种方法是使用一个代码生成器,它解析现有的普通java代码然后输出一个扩展了persistencecapable接口的新版本的代码。如果通过手工方式来扩展这个接口是没有好处的。

介绍

java 数据对象 (jdo) is 是一个存储java对象的规范.   它已经被jcp组织定义成jsr12规范。jdo的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范。规范的两个主要目的是提供数据处理和访问机制的api以及允许规范的实现作为应用服务器的一部分。

jdo 和 jdbc

jdbc和jdo都是java调用数据库的apis。区别在于,他们访问数据存储的具体方法不同。jdbc提供了一种非常好的机制,它可以使应用程序代码与具体的数据库厂商和数据库位置无关。在大多数情况下数据存储使用的是关系数据库。但是当使用jdbc驱动运行在一个非关系数据库时就不是很好了。而对于jdo来说,运行在它之下的数据库就可以是一个关系数据库,面向对象的数据库或者其他完全不同的数据库。在jdo运行于关系数据库之上时,它可以通过jdbc很好的完成数据存储。而这一切对于开发人员来说都是透明的,所有实现都有jdo本身来完成。

jdbc不支持面向对象的数据库表示。jdbc数据库表示完全围绕关系数据库模型。这常常导致书写代码时在应用程序和数据库之间存在一个中间层。这个层的作用也许是分解java对象。分解java对象的过程会对使用的对象稍作改变,这样对象才能存储到关系数据库之中。同样的必须存在一种机制来把数据库中的记录转换成适当的java对象。jdo与jdbc刚好相反,他的数据库标示完全面向对象。这种机制并不新奇,在一些面向对象数据库中已经使用了这种机制。

jdbc的查询语言一般都是用sql。jdo的查询语言看起来与java更接近。使用jdo无需再专门学习一种查询语言比如sql。如果你会用java那么你就能够使用jdo的查询语言。

执行

jdo规范定义了jdo实现的接口已经jdo实现的内容。sun提供了一个jdo规范的参考实现,但是在2002年5月份发布的版本中它并没有完全实现规范中所要求的内容。还有众多的厂商提供的jdo实现可以使用。在下面的表格中列出了一部分。

 

厂商

产品

solarmetric

kodo jdo

prismtech

openfusion java data objects

signsoft

intellibo

poet

fastobjects

api

javax.jdo.spi.persistencecapable

任何被jdo实现控制的类都必须扩展persistencecapable接口。任何扩展persistencecapable接口的类的实例都可以看作是一个“jdo实例”。这个接口定义了jdo实现使用的方法来控制类的实例。

    public abstract javax.jdo.persistencemanager jdogetpersistencemanager();    public abstract void jdoreplacestatemanager(javax.jdo.spi.statemanager)             throws securityexception;    public abstract void jdoprovidefield(int);    public abstract void jdoprovidefields(int[]);    public abstract void jdoreplacefield(int);    public abstract void jdoreplacefields(int[]);    public abstract void jdoreplaceflags();    public abstract void jdocopyfields(object, int[]);    public abstract void jdomakedirty(string);    public abstract object jdogetobjectid();    public abstract object jdogettransactionalobjectid();    public abstract boolean jdoisdirty();    public abstract boolean jdoistransactional();    public abstract boolean jdoispersistent();    public abstract boolean jdoisnew();    public abstract boolean jdoisdeleted();    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager);    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager, object);    public abstract object jdonewobjectidinstance();    public abstract object jdonewobjectidinstance(string);    public abstract void jdocopykeyfieldstoobjectid(object);    public abstract void jdocopykeyfieldstoobjectid(            javax.jdo.spi.persistencecapable.objectidfieldsupplier, object);    public abstract void jdocopykeyfieldsfromobjectid(            javax.jdo.spi.persistencecapable.objectidfieldconsumer, object);    

通常会有一个由jdo实现厂商提供的工具来完成普通的java类到“jdo实例”类的转化。这个工具可能通过不同的方法来实现。第一种方法是通过字节码增强器来实现。一个jdo字节码增强器把普通的java类转换成“jdo实例”类的过程就是把扩展persistencecapable接口的方法的代码加到类中。第二种方法是使用一个代码生成器,它解析现有的普通java代码然后输出一个扩展了persistencecapable接口的新版本的代码。如果通过手工方式来扩展这个接口是没有好处的。

介绍

java 数据对象 (jdo) is 是一个存储java对象的规范.   它已经被jcp组织定义成jsr12规范。jdo的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范。规范的两个主要目的是提供数据处理和访问机制的api以及允许规范的实现作为应用服务器的一部分。

jdo 和 jdbc

jdbc和jdo都是java调用数据库的apis。区别在于,他们访问数据存储的具体方法不同。jdbc提供了一种非常好的机制,它可以使应用程序代码与具体的数据库厂商和数据库位置无关。在大多数情况下数据存储使用的是关系数据库。但是当使用jdbc驱动运行在一个非关系数据库时就不是很好了。而对于jdo来说,运行在它之下的数据库就可以是一个关系数据库,面向对象的数据库或者其他完全不同的数据库。在jdo运行于关系数据库之上时,它可以通过jdbc很好的完成数据存储。而这一切对于开发人员来说都是透明的,所有实现都有jdo本身来完成。

jdbc不支持面向对象的数据库表示。jdbc数据库表示完全围绕关系数据库模型。这常常导致书写代码时在应用程序和数据库之间存在一个中间层。这个层的作用也许是分解java对象。分解java对象的过程会对使用的对象稍作改变,这样对象才能存储到关系数据库之中。同样的必须存在一种机制来把数据库中的记录转换成适当的java对象。jdo与jdbc刚好相反,他的数据库标示完全面向对象。这种机制并不新奇,在一些面向对象数据库中已经使用了这种机制。

jdbc的查询语言一般都是用sql。jdo的查询语言看起来与java更接近。使用jdo无需再专门学习一种查询语言比如sql。如果你会用java那么你就能够使用jdo的查询语言。

执行

jdo规范定义了jdo实现的接口已经jdo实现的内容。sun提供了一个jdo规范的参考实现,但是在2002年5月份发布的版本中它并没有完全实现规范中所要求的内容。还有众多的厂商提供的jdo实现可以使用。在下面的表格中列出了一部分。

 

厂商

产品

solarmetric

kodo jdo

prismtech

openfusion java data objects

signsoft

intellibo

poet

fastobjects

api

javax.jdo.spi.persistencecapable

任何被jdo实现控制的类都必须扩展persistencecapable接口。任何扩展persistencecapable接口的类的实例都可以看作是一个“jdo实例”。这个接口定义了jdo实现使用的方法来控制类的实例。

    public abstract javax.jdo.persistencemanager jdogetpersistencemanager();    public abstract void jdoreplacestatemanager(javax.jdo.spi.statemanager)             throws securityexception;    public abstract void jdoprovidefield(int);    public abstract void jdoprovidefields(int[]);    public abstract void jdoreplacefield(int);    public abstract void jdoreplacefields(int[]);    public abstract void jdoreplaceflags();    public abstract void jdocopyfields(object, int[]);    public abstract void jdomakedirty(string);    public abstract object jdogetobjectid();    public abstract object jdogettransactionalobjectid();    public abstract boolean jdoisdirty();    public abstract boolean jdoistransactional();    public abstract boolean jdoispersistent();    public abstract boolean jdoisnew();    public abstract boolean jdoisdeleted();    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager);    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager, object);    public abstract object jdonewobjectidinstance();    public abstract object jdonewobjectidinstance(string);    public abstract void jdocopykeyfieldstoobjectid(object);    public abstract void jdocopykeyfieldstoobjectid(            javax.jdo.spi.persistencecapable.objectidfieldsupplier, object);    public abstract void jdocopykeyfieldsfromobjectid(            javax.jdo.spi.persistencecapable.objectidfieldconsumer, object);    

通常会有一个由jdo实现厂商提供的工具来完成普通的java类到“jdo实例”类的转化。这个工具可能通过不同的方法来实现。第一种方法是通过字节码增强器来实现。一个jdo字节码增强器把普通的java类转换成“jdo实例”类的过程就是把扩展persistencecapable接口的方法的代码加到类中。第二种方法是使用一个代码生成器,它解析现有的普通java代码然后输出一个扩展了persistencecapable接口的新版本的代码。如果通过手工方式来扩展这个接口是没有好处的。

介绍

java 数据对象 (jdo) is 是一个存储java对象的规范.   它已经被jcp组织定义成jsr12规范。jdo的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范。规范的两个主要目的是提供数据处理和访问机制的api以及允许规范的实现作为应用服务器的一部分。

jdo 和 jdbc

jdbc和jdo都是java调用数据库的apis。区别在于,他们访问数据存储的具体方法不同。jdbc提供了一种非常好的机制,它可以使应用程序代码与具体的数据库厂商和数据库位置无关。在大多数情况下数据存储使用的是关系数据库。但是当使用jdbc驱动运行在一个非关系数据库时就不是很好了。而对于jdo来说,运行在它之下的数据库就可以是一个关系数据库,面向对象的数据库或者其他完全不同的数据库。在jdo运行于关系数据库之上时,它可以通过jdbc很好的完成数据存储。而这一切对于开发人员来说都是透明的,所有实现都有jdo本身来完成。

jdbc不支持面向对象的数据库表示。jdbc数据库表示完全围绕关系数据库模型。这常常导致书写代码时在应用程序和数据库之间存在一个中间层。这个层的作用也许是分解java对象。分解java对象的过程会对使用的对象稍作改变,这样对象才能存储到关系数据库之中。同样的必须存在一种机制来把数据库中的记录转换成适当的java对象。jdo与jdbc刚好相反,他的数据库标示完全面向对象。这种机制并不新奇,在一些面向对象数据库中已经使用了这种机制。

jdbc的查询语言一般都是用sql。jdo的查询语言看起来与java更接近。使用jdo无需再专门学习一种查询语言比如sql。如果你会用java那么你就能够使用jdo的查询语言。

执行

jdo规范定义了jdo实现的接口已经jdo实现的内容。sun提供了一个jdo规范的参考实现,但是在2002年5月份发布的版本中它并没有完全实现规范中所要求的内容。还有众多的厂商提供的jdo实现可以使用。在下面的表格中列出了一部分。

 

厂商

产品

solarmetric

kodo jdo

prismtech

openfusion java data objects

signsoft

intellibo

poet

fastobjects

api

javax.jdo.spi.persistencecapable

任何被jdo实现控制的类都必须扩展persistencecapable接口。任何扩展persistencecapable接口的类的实例都可以看作是一个“jdo实例”。这个接口定义了jdo实现使用的方法来控制类的实例。

    public abstract javax.jdo.persistencemanager jdogetpersistencemanager();    public abstract void jdoreplacestatemanager(javax.jdo.spi.statemanager)             throws securityexception;    public abstract void jdoprovidefield(int);    public abstract void jdoprovidefields(int[]);    public abstract void jdoreplacefield(int);    public abstract void jdoreplacefields(int[]);    public abstract void jdoreplaceflags();    public abstract void jdocopyfields(object, int[]);    public abstract void jdomakedirty(string);    public abstract object jdogetobjectid();    public abstract object jdogettransactionalobjectid();    public abstract boolean jdoisdirty();    public abstract boolean jdoistransactional();    public abstract boolean jdoispersistent();    public abstract boolean jdoisnew();    public abstract boolean jdoisdeleted();    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager);    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager, object);    public abstract object jdonewobjectidinstance();    public abstract object jdonewobjectidinstance(string);    public abstract void jdocopykeyfieldstoobjectid(object);    public abstract void jdocopykeyfieldstoobjectid(            javax.jdo.spi.persistencecapable.objectidfieldsupplier, object);    public abstract void jdocopykeyfieldsfromobjectid(            javax.jdo.spi.persistencecapable.objectidfieldconsumer, object);    

通常会有一个由jdo实现厂商提供的工具来完成普通的java类到“jdo实例”类的转化。这个工具可能通过不同的方法来实现。第一种方法是通过字节码增强器来实现。一个jdo字节码增强器把普通的java类转换成“jdo实例”类的过程就是把扩展persistencecapable接口的方法的代码加到类中。第二种方法是使用一个代码生成器,它解析现有的普通java代码然后输出一个扩展了persistencecapable接口的新版本的代码。如果通过手工方式来扩展这个接口是没有好处的。

介绍

java 数据对象 (jdo) is 是一个存储java对象的规范.   它已经被jcp组织定义成jsr12规范。jdo的第一个版本在2000年6月6日提交并在2002年4月30日正式发布1.0版本规范。规范的两个主要目的是提供数据处理和访问机制的api以及允许规范的实现作为应用服务器的一部分。

jdo 和 jdbc

jdbc和jdo都是java调用数据库的apis。区别在于,他们访问数据存储的具体方法不同。jdbc提供了一种非常好的机制,它可以使应用程序代码与具体的数据库厂商和数据库位置无关。在大多数情况下数据存储使用的是关系数据库。但是当使用jdbc驱动运行在一个非关系数据库时就不是很好了。而对于jdo来说,运行在它之下的数据库就可以是一个关系数据库,面向对象的数据库或者其他完全不同的数据库。在jdo运行于关系数据库之上时,它可以通过jdbc很好的完成数据存储。而这一切对于开发人员来说都是透明的,所有实现都有jdo本身来完成。

jdbc不支持面向对象的数据库表示。jdbc数据库表示完全围绕关系数据库模型。这常常导致书写代码时在应用程序和数据库之间存在一个中间层。这个层的作用也许是分解java对象。分解java对象的过程会对使用的对象稍作改变,这样对象才能存储到关系数据库之中。同样的必须存在一种机制来把数据库中的记录转换成适当的java对象。jdo与jdbc刚好相反,他的数据库标示完全面向对象。这种机制并不新奇,在一些面向对象数据库中已经使用了这种机制。

jdbc的查询语言一般都是用sql。jdo的查询语言看起来与java更接近。使用jdo无需再专门学习一种查询语言比如sql。如果你会用java那么你就能够使用jdo的查询语言。

执行

jdo规范定义了jdo实现的接口已经jdo实现的内容。sun提供了一个jdo规范的参考实现,但是在2002年5月份发布的版本中它并没有完全实现规范中所要求的内容。还有众多的厂商提供的jdo实现可以使用。在下面的表格中列出了一部分。

 

厂商

产品

solarmetric

kodo jdo

prismtech

openfusion java data objects

signsoft

intellibo

poet

fastobjects

api

javax.jdo.spi.persistencecapable

任何被jdo实现控制的类都必须扩展persistencecapable接口。任何扩展persistencecapable接口的类的实例都可以看作是一个“jdo实例”。这个接口定义了jdo实现使用的方法来控制类的实例。

    public abstract javax.jdo.persistencemanager jdogetpersistencemanager();    public abstract void jdoreplacestatemanager(javax.jdo.spi.statemanager)             throws securityexception;    public abstract void jdoprovidefield(int);    public abstract void jdoprovidefields(int[]);    public abstract void jdoreplacefield(int);    public abstract void jdoreplacefields(int[]);    public abstract void jdoreplaceflags();    public abstract void jdocopyfields(object, int[]);    public abstract void jdomakedirty(string);    public abstract object jdogetobjectid();    public abstract object jdogettransactionalobjectid();    public abstract boolean jdoisdirty();    public abstract boolean jdoistransactional();    public abstract boolean jdoispersistent();    public abstract boolean jdoisnew();    public abstract boolean jdoisdeleted();    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager);    public abstract javax.jdo.spi.persistencecapable             jdonewinstance(javax.jdo.spi.statemanager, object);    public abstract object jdonewobjectidinstance();    public abstract object jdonewobjectidinstance(string);    public abstract void jdocopykeyfieldstoobjectid(object);    public abstract void jdocopykeyfieldstoobjectid(            javax.jdo.spi.persistencecapable.objectidfieldsupplier, object);    public abstract void jdocopykeyfieldsfromobjectid(            javax.jdo.spi.persistencecapable.objectidfieldconsumer, object);    

通常会有一个由jdo实现厂商提供的工具来完成普通的java类到“jdo实例”类的转化。这个工具可能通过不同的方法来实现。第一种方法是通过字节码增强器来实现。一个jdo字节码增强器把普通的java类转换成“jdo实例”类的过程就是把扩展persistencecapable接口的方法的代码加到类中。第二种方法是使用一个代码生成器,它解析现有的普通java代码然后输出一个扩展了persistencecapable接口的新版本的代码。如果通过手工方式来扩展这个接口是没有好处的。

扫描关注微信公众号