扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年9月30日
关键字:
在本页阅读全文(共4页)
首先,你需要下载和安装Kodo.从试用的版本开始,你可在这里找到http://www.solarmetric.com.本书中使用3.2.1版本。再次提醒,你得把/kodo-jdo-3.2.1/lib中的包放入我们的/lib目录下。
为持久化模型,你得修改Ant任务以添加JDO字节码增强的步骤:象示例5-8所示的那样,添加Ant任务来完成这一动作。
示例5-8.
你也需要在Ant 建构文件中给kodo-jdo.jar, jdo-1.0.1.jar, and Jakarta-commons-lang-1.0.1.jar增加路径元素。
下一步,建构持久化映射。最简便的办法就是通过Kodo向导。运行Workbench(在你所安装的Kodo的\bin目录下),并从菜单中选择MetaDataàCreate MetaDate.反之,你可使用/kodo-jdo-3.2.1/bin目录下的metadatatool 和mappingtool两个脚本,它们分别被kodo.jdbc.meta.MappingTo-ol和kodo.meta.JDOMetaDataTool的运行文件所使用。
为了与其它JDO版本保持一致,因此你打算用XML从头建构映射文件。用类的元数据和。mapping 文件生成。jdo文件。此两文件都在/war/WEB-INF/classes/com/springbook目录下。
示例5-9声明元数据文件。
示例5-9 package.jdo
示例5-10描述了映射文件。
示例5-10. package.mapping
几乎太容易了。模型本身没有被持久化,那就是我们使用OR技术的原因。尽管你仍需在你的应用程序中有一层代码,也就是我们所说的fa?ade层,来调用那个持久化模型。因此你将看到一系列的模板调用。查询器(finder)声明了JDO查询语句,及持久化删除、更新、新增的对象。你已经有了一个接口,但还需要实现fa?ade(如示例5-11)。
示例 5-11. KodoRentABike.java
这不是完全的JDO查询语言的查询;它只不过是个过滤器而已。JDO 2.0将会增加一个便利的查询字符串,因而你可以以单一的字符串来添加完全的JDO查询,而毋须建构完全的查询。
public class KodoRentABike extends JdoDaoSupport implements RentABike {private String storeName;public List getBikes( ) {return (List)getJdoTemplate( )。find(Bike.class);}public Bike getBike(String serialNo) {Collection c = getJdoTemplate( )。find(Bike.class, "serialNo == '" + serialNo + "'");Bike b = null;if(c.size( ) > 0) {b = (Bike)c.iterator()。next( );}return b;}public Bike getBike(int bikeId) {return (Bike)getJdoTemplate( )。getObjectById(Bike.class, new Long(bikeId));}public void saveBike(Bike bike) {getJdoTemplate( )。makePersistent(bike);}public void deleteBike(Bike bike) {getJdoTemplate( )。deletePersistent(bike);}//etc.
最后,你需要设定一些配置来把这些都组装在一起。示例5-12先说明了JDO的配置。
示例 5-12. package.properties
# To evaluate or purchase a license key, visit http://www.solarmetric.comkodo.LicenseKey: YOUR_LICENSE_KEY_HEREjavax.jdo.PersistenceManagerFactoryClass: kodo.jdbc.runtime.JDBCPersistenceManagerFactoryjavax.jdo.option.ConnectionDriverName: com.mysql.jdbc.Driverjavax.jdo.option.ConnectionUserName: bikestorejavax.jdo.option.ConnectionPassword:javax.jdo.option.ConnectionURL: jdbc:mysql://localhost/bikestorejavax.jdo.option.Optimistic: truejavax.jdo.option.RetainValues: truejavax.jdo.option.NontransactionalRead: truejavax.jdo.option.RestoreValues: truekodo.Log: DefaultLevel=WARN, Runtime=INFO, Tool=INFOkodo.PersistenceManagerImpl: DetachOnClose=true注意DetachOnClose 选项。它确保了JDO在关闭连接时的延迟加载,因而你应用程序的其它部分 ,象视图(view),只能访问已加载的Bean.Spring上下文需把JDO持久化管理器,持久化管理工厂,fa?ade,以及任何在fa?ade上的服务组合在一起。这些都在context中完成(示例5-13)。Example 5-13. RentABikeApp-servlet.xml E:\RentABikeApp\war\WEB-INF\kodo.propertiesBruce's Bikes
记得你已经有了一个使用fa?ade的测试用例,因此你可以建构并让它运行起来。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者