### 蓝凌JAVA产品V16开发手册关键知识点解析
#### 一、文档概述与目标人群
**标题**:“蓝凌JAVA产品V16开发手册”表明这是一份专门针对蓝凌公司最新版本(V16)产品的开发指南。
**描述**:“蓝凌JAVA产品V16开发手册,蓝凌V16.0产品开发手册”,进一步确认了这份文档的性质——即它是用于指导开发者使用蓝凌V16.0产品的官方文档。
**目标读者**:面向Java开发人员,尤其是那些负责维护或开发基于蓝凌平台的应用程序的专业人士。
#### 二、日志框架更新:SLF4J + Logback
**背景**:日志记录在软件开发中至关重要,它帮助开发者调试代码、监控应用程序性能并诊断运行时问题。随着技术的发展,日志框架也需要不断更新以适应新的需求和技术趋势。
**更新内容**:
- **框架选择**:从之前的Log4j切换到SLF4J + Logback组合。
- **原因**:统一日志门面接口,提高日志记录的效率、稳定性和易用性。
- **具体变化**:删除了旧的日志配置文件`${project}src/log4j.properties`,并将日志路径配置在`${project}src/Logback.xml`中。
- **注意事项**:
- 更新日志记录方式以匹配新框架的要求。
- 示例中的不规范书写需要被修正,例如将`logger.info(curTimeItem);`改为符合SLF4J规范的形式。
- 对于异常处理,推荐使用`log.error("xxxx{}", e);`而不是之前的`log.error(e)`。
#### 三、Hibernate开发规范
**概述**:Hibernate作为Java领域中最流行的ORM框架之一,在蓝凌V16产品中扮演着重要的角色。本部分详细介绍了在使用Hibernate进行数据库交互时应该遵循的最佳实践。
**核心内容**:
- **参数占位符**:使用参数化的查询语句可以有效防止SQL注入攻击,并提高查询效率。
- **HQL级联对象查询**:利用Hibernate的HQL语言支持级联操作,简化复杂的数据库操作。
- **自我关联表HQL**:处理自我引用的实体关系时,使用特定的HQL语句结构。
- **多对多条件为对象情况**:当处理多对多关系时,采用更高效的方法。
- **获取Hibernate的session**:
- 在DAO层中直接使用`super.getSession()`来获取事务管理的session。
- 如果在其他非DAO层需要使用session,则需通过Spring上下文获取`KmssSessionFactoryProxy`实例,并调用其`openSession()`方法。
- 使用session时务必注意事务管理,确保资源的正确释放。
**示例代码**:
```java
// 获取session
KmssSessionFactoryProxy kmssSessionFactoryProxy = (KmssSessionFactoryProxy) SpringBeanUtil.getApplicationContext().getBean("sessionFactory");
Session session = kmssSessionFactoryProxy.openSession();
```
**其他注意事项**:
- `HibernateTemplate.saveOrUpdateAll()`方法已被废弃,建议使用`HibernateWrapper.saveOrUpdateAll()`替代。
- 当需要获取数据库连接时,应通过`ConnectionWrapper`类实现,且使用完毕后记得关闭连接。
- **HQL查询语句问题定位**:
- 遇到HQL语法错误时,可访问特定URL(如`http://localhost:8080/ekp/trans/to_sql?hql=你的HQL`)进行语法检查。
- 通过设置断点在`KmssASTQueryTranslatorFactory`、`HQLConverTool`、`HQLQueryPlan`和`QueryPlanCache`等类中,可以更深入地了解HQL翻译过程及SQL生成逻辑。
#### 四、Spring注入循环依赖问题
**问题描述**:在使用Spring框架进行依赖注入时,可能会遇到循环依赖的问题,导致无法正常启动应用。
**解决方案**:
- 通常情况下,Spring会尝试解决循环依赖问题,但某些情况下可能会失败,这时需要手动调整Bean的定义或使用特殊配置。
- 例如,可以通过调整Bean的作用域(如使用`prototype`代替`singleton`)、改变构造函数参数顺序等方式来避免循环依赖。
蓝凌JAVA产品V16开发手册不仅涵盖了日志框架的更新和Hibernate的使用规范,还提供了关于Spring框架中常见问题的解决方案,为Java开发人员提供了宝贵的参考资料。
1