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对象自动创建是的,那自动创建的表的名称有又叫什么呢?有没有哪位大牛实验过?