好几天前 我试着把nutz在gae上运行,运行很正常,这下子在gae上开发一些应用就会更加简单高效了。
今天在看gae 数据存储部分,正打算把 这部分写成 nutz.dao的实现类,这样就能方便的移植某些应用了 呵呵。
简单的做了一个小例子,争取尽快把 数据存储这部分弄明白,下面记录自己的心得:
JDOHelper.getPersistenceManagerFactory("transactions-optional"); 这里 的 transactions-optional 应该是控制 pmf 初始化的一个关键参数, 不写会报错。 详细整理这里的参数
@PersistenceCapable(identityType = IdentityType.APPLICATION)
应该是控制表的 生存周期的
整理不同IdentityType的含义
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
这个表示不同的主键类型
还需要考虑 pm的缓存池和 声明式 事务控制
下面再记录一下 nutz的用法
@Modules(scanPackage=true) scanPackage 在主模块上 ,true表示扫描包含子包的所有类
@Ok("redirect:/") redirect 表示重定向
@Param("::user.") ::user. 表示 一个 以user. 开始的表单属性 可以理解为 actionform 中的 user对象
@Param("..") .. 表示所有的request属性 ,可以理解为 actionform
还需要 考虑 jsp的一些常用标签 ,使用jstl ,还是自定义 ,还是 freemarker
暂时只实现 数据库的 增删改 查byid, all,page 等,还有 delete,和update 批量处理
暂不实现 事务管理,实现 nutz.dao中的 几个简单的查询 即可,其他的留待以后完善,包括添加声明式事务管理
<?xml version="1.0" encoding="utf-8"?> <jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> <persistence-manager-factory name="transactions-optional"> <property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/> <property name="javax.jdo.option.ConnectionURL" value="appengine"/> <property name="javax.jdo.option.NontransactionalRead" value="true"/> <property name="javax.jdo.option.NontransactionalWrite" value="true"/> <property name="javax.jdo.option.RetainValues" value="true"/> <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> </persistence-manager-factory> </jdoconfig>
JDOHelper.getPersistenceManagerFactory("transactions-optional");
代码中的transaction-optional对应着 上面配置文件中 pmf 节点。
可以理解为 不同的数据库? 开发库和 部署库。 我感觉是可以的 呵呵。还应该看看 jdo的文档掌握配置文件的属性。