Windchill-development-using-JPQL-v1.2.1
【Windchill开发使用JPQL v1.2.1】的知识点详解 1. **Windchill数据库操作挑战** Windchill系统采用专有的对象/关系映射(O/R Mapping),导致在开发新功能时面临一些困扰。使用PTC的标准接口`wt.fc.*`可以方便地处理简单查询和数据操作,但复杂的查询会变得极其冗长且难以理解。另一方面,JDBC虽然性能优异,但因为业务处理基于业务对象,频繁的O/R转换既繁琐又影响性能。Info*Engine因其低效、复杂、功能不完整和难以阅读的特点,较少被选用。 2. **PQL(Persistent Query Language)部署** PQL是一种用于Windchill的查询语言,旨在解决上述问题。部署PQL需要以下步骤: - 将`jpql-1.2.1.jar`和`antlr4-runtime-4.11.1.jar`复制到$WT_HOME/codebase/WEB-INF/lib目录。 - 使用Windchill Shell,执行命令`xconfmanager -s wt.services.service.2090=com.ptc.xworx.pql.XPersistenceManager/com.ptc.xworx.pql.StandardXPersistenceManager -t codebase/wt.properties -p`。 - 重启Windchill以应用更改。 3. **PQL开发环境配置** 配置PQL开发环境相对简单。例如,在Eclipse环境中,只需将必要的jar包添加到项目的类路径。对于其他开发环境,配置过程类似。 4. **PQL的“Hello World”** PQL支持对业务对象和物理表的查询。对业务对象查询时,`FROM`子句需指定业务对象的全类名,如`FROM wt.part.WTPart A`,并确保在`SELECT`子句中包含别名,如`SELECT A`。对物理表的查询则更接近于SQL,可以自由指定表名。例如: ```java QueryResult qr = XPersistenceHelper.manager.query("SELECT A FROM wt.part.WTPart A"); while (qr.hasMoreElements()) { Object[] objs = (Object[]) qr.nextElement(); WTPart part = (WTPart) objs[0]; System.out.println(part.getNumber()); } ``` 对物理表的查询示例: ```java QueryResult qr = XPersistenceHelper.manager.query("SELECT A.WTPARTNUMBER FROM WTPARTMASTER A"); while (qr.hasMoreElements()) { Object[] objs = (Object[]) qr.nextElement(); String wtpartnumber = (String) objs[0]; System.out.println(wtpartnumber); } ``` 5. **JPQL(Java Persistence Query Language)的多表和多对象查询** JPQL允许进行类似于SQL的多表连接查询。它可以同时处理多个业务对象和物理表,支持对象别名和数据库字段名。例如: ```java StringBuffer jpql = new StringBuffer("SELECT B FROM wt.part.WTPart A, wt.part.WTPartMaster B "); jpql.append("WHERE A.IDA3MASTERREFERENCE = B.IDA2A2 AND B.WTPARTNUMBER IN('D3_0000000170', 'D3_0000000180')"); QueryResult qr = XPersistenceHelper.manager.query(jpql.toString()); while (qr.hasMoreElements()) { Object[] objs = (Object[]) qr.nextElement(); // 处理查询结果 } ``` 总结来说,Windchill开发中使用JPQL v1.2.1可以显著提升复杂查询的可读性和效率,减少了O/R转换的负担。通过PQL和JPQL,开发者可以更加灵活地处理业务对象和数据库表之间的交互,从而提高开发效率和代码质量。
剩余16页未读,继续阅读
- 粉丝: 2
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助