`
Cindy_Lee
  • 浏览: 112059 次
  • 性别: Icon_minigender_1
  • 来自: 武汉人在北京
社区版块
存档分类
最新评论

jdo直接操作sql

    博客分类:
  • gae
阅读更多

google推出支持java的gae也有好一段时间了,我准备做一个博客练练手。但是发现gae里操作数据库用的是jdo,jdo虽然是将rdbms转换成了orm但是总感觉有那么点不爽,像这样转换后使得我们只能对数据库做一些简单的操作,本来只需要对数据库进行一次的操作,往往被分割成了多次,消耗了性能不说还增加了页面的相应时间。所以我一直在想:如何能直接用sql语句对数据库进行操作呢?我查了一些jdo的api发现了一个可行方法:

PersistenceManager pm = pmf.getPersistenceManager();
Query q = pm.newQuery("javax.jdo.query.SQL", "EXECUTE sp_who");

 

Query q = pm.newQuery("javax.jdo.query.SQL", "UPDATE MY_TABLE SET MY_COLUMN = ? WHERE MY_ID = ?");

 

Query q = pm.newQuery("javax.jdo.query.SQL","SELECT col1, col2 FROM MYTABLE WHERE col3 = ? AND col4 = ? and col5 = ?");
List results = (List) q.execute(val1, val2, val3);

 

Query query = pm.newQuery("javax.jdo.query.SQL", "SELECT count(*) FROM MYTABLE");
List results = (List) query.execute();
Integer tableSize = (Integer) result.iterator().next();

详细内容查看: http://www.datanucleus.org/products/accessplatform_1_1/jdo/sql.html

不知道这些能不能直接在gae里用呢,但是gae里的bigtable都是根据pojo对象自动创建是的,那自动创建的表的名称有又叫什么呢?有没有哪位大牛实验过?

分享到:
评论
2 楼 toeo 2009-09-20  
原生sql 好像是不支持.


INFO: Property datanucleus.query.cached unknown - will be ignored
javax.jdo.JDOUserException: Query language "SQL" is not supported by the datastore.
at org.datanucleus.jdo.JDOPersistenceManager.newQuery(JDOPersistenceManager.java:1270)
at com.test.demo.server.LoginUserActionImpl.findLoginUserSize(LoginUserActionImpl.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:124)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:313)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)



报了这样的错误.
1 楼 toeo 2009-09-20  
呵呵.我测试一下.

相关推荐

    全面了解jdo数据库编程

    6. **与ORM框架比较**:虽然JDO和ORM框架如Hibernate有相似之处,但JDO强调的是对象与数据的直接映射,而Hibernate则更偏向于HQL和SQL的混合使用。 在学习JDO时,应深入理解其规范和实现,同时实践使用JDO开发项目...

    jdo-java数据对象

    JDBC虽然强大,但直接使用SQL语句进行数据库操作可能会增加开发复杂性,而JDO则允许程序员通过定义类来创建数据对象,将对象与数据库之间的交互工作交给JDO实现,从而简化数据库访问流程。 JDO的核心思想是对象-...

    全面了解JDO第四部分

    首先,JDO提供了一种透明的持久化机制,允许开发者在应用程序中直接操作对象,而无需关心底层数据库的具体实现。这意味着,通过JDO,对象可以直接被创建、查询、更新和删除,就像它们是内存中的普通对象一样,这大大...

    JDO原理及开发实现

    JDO 提供了一种透明的持久化机制,允许开发者直接操作对象,而无需关心底层数据库的操作细节。JDO 的核心理念是将Java对象模型与数据库表结构之间的映射过程自动化,简化了数据存储和检索的过程。 ### 1. 什么是JDO...

    全面了解JDO第一部分

    此外,学习JDO的查询语言(JDOQL)也是至关重要的,它允许你在Java代码中直接进行复杂的查询操作。 通过阅读《jdo-1_0_1-spec.pdf》规范文档,你可以深入了解JDO的标准特性和用法。而`jdo-1_0_1-ri.zip`文件可能...

    JDO原理及开发.doc

    JDO允许开发者将对象模型直接存入数据库,而无需关心底层数据存储的细节,大大简化了数据访问层的开发工作。本文档《JDO原理及开发》将深入探讨JDO的核心概念和开发流程。 一、JDO简介 JDO是一种持久化框架,它通过...

    jdo2-api-2.3-ec hive hdfs 所需jar

    4. **强大的查询能力**:JDOQL(JDO Query Language)提供了类似SQL的查询功能,可以进行复杂的数据筛选和聚合操作。 5. **事务管理**:JDO提供了丰富的事务控制选项,支持不同级别的事务隔离。 五、在Hive和HDFS中...

    jdo2-api-2.0

    这个API使得开发人员能够在Java应用程序中与数据库交互,而无需直接编写SQL语句。 JDO2-API-2.0主要包含以下几个关键概念和功能: 1. **Datastore Persistence Model**:JDO定义了一个数据存储持久化模型,允许...

    JDO原理及案例开发

    Java 数据对象(JDO)是一种Java编程语言中的持久化框架,它允许开发者将Java对象存储到关系型数据库中,而无需直接编写SQL语句。JDO 提供了一种标准的接口,使得Java对象和数据库之间的交互变得更加简单和灵活。...

    JDO上实践

    JDO的主要目标是简化数据持久化,允许开发者将Java对象直接保存到数据库中,而无需编写大量的SQL代码。在"JDO上实践"的主题中,我们将深入探讨如何在实际项目中使用JDO来处理数据持久化。 首先,理解JDO的基本概念...

    全面了解JDO数据库编程

    它为Java应用程序提供了一种透明的持久化机制,允许开发者在不直接操作SQL的情况下管理对象和数据库之间的映射。JDO的目标是简化数据库编程,提高开发效率,并允许对象模型和数据库模式之间的松耦合。 **JDO基础** ...

    DataNucleus JPA/JDO访问mysql示例

    Java Data Objects (JDO) 是另一种持久化机制,它允许开发者直接与持久化数据进行交互,而无需直接使用SQL。JDO提供了比JPA更直接的持久化接口,并且在某些情况下,性能可能更高。 **访问MySQL** MySQL是一个广泛...

    全面了解JDO第二部分

    - **SQL**:直接使用SQL查询语句,适用于复杂的查询需求。 #### 七、JDO与ORM的关系 JDO是一种ORM(Object-Relational Mapping)技术,它将Java对象模型与关系型数据库之间的差异进行了桥接。与Hibernate等其他ORM...

    FastObjects™ JDO Technical Documentation

    3. **对象持久化**:FastObjects 提供了多种方式来持久化 Java 对象,包括使用 JDO 或直接操作数据库。对象持久化是指将 Java 对象的状态保存到持久性存储介质上的过程。 4. **事务管理**:FastObjects 支持 ACID ...

    JDO within a JavaEE environment

    JDO的查询语言(JDOQL)类似SQL,但它是面向对象的,可以方便地处理复杂的查询条件和关联操作。 为了在JavaEE应用中使用JDO,首先需要在项目的`persistence.xml`文件中配置JDO供应商,指定数据源和持久化单元。然后...

Global site tag (gtag.js) - Google Analytics