一、MQ
MQ,Message Queue 消息队列,消息中间件,是一种应用程序对应用程序通信方式,应用程序都是通过队列的方式发送和检索需要传递的数据消息,而无需专用的链接来连接它们。队列的使用除去了接受和发送应用程序同时执行的要求。
JMS java message service java消息服务,是sun推出的中间件服务的一个标准和API定义。
MQ的实现可以基于JMS,也可以基于其他的规范和标准。
成熟的产品有:apache 的ActiveMQ,对JMS和JavaEE完全支持。比较成熟,支持多种语言的客户端。
RabbitMQ 在AMQP的基础上完成的。
ZeroMQ轻量级。
二、配置多个数据源的方案
SPRing本身提供了动态数据源的抽象实现类。org,springframework.jdbc.datasource.lookup.AbstractRoutingDataSource。
实现步骤:1、首先applicationConcext.xml中配置多个数据源的datasource,然后配置一个来管理多个数据源的datasource。
2、继承AbstractRoutingDataSource类,实现具体的方法。
3、创建一个AbstractRoutingDataSource实现类的管理类,可以动态的设置数据源。
4、在具体的Dao中设置相应的数据源后即可针对某一数据库做相应的增删改查操作。
三、UML
UML Unified Modeling Language 统一建模语言,是一组用于描述面向对象分析设计OOAD的图形化表达方式。
UML为交流面向对象的设计中的需求、行为、体系结构的实现提供了一套综合的表示方法
四、关于SQL优化的问题
尽量避免全表扫描。
对主键、外键建立索引,对经常查询的字段、order by的字段、group by的字段建立索引。
多个表连接查询时,每次只连接两个表,将产生的结果再与其他做连接。
防止索引失效,MySQL用explain查看sql执行情况。
五、hibernate和mybatis的对比
同样是数据库持久化层框架,对关系数据库做了封装。对象关系映射框架。
hibernate对数据库做了更完整的封装。hibernate数据库移植性较好,mybatis针对不同的数据库不同的sql。
mybatis可以人工的sql优化,可以减少查询的字段,mybatis需要维护SQL和结果映射。
六、mybatis的关联查询
通过resultMap实现复杂的查询;
一对多的两种实现方式:
1、嵌套查询,嵌套select ,在collection配置中连接一个select。查询两次,首先查询主表,得到数据后根据配置的字段查询关联表。返回的数据没有冗余。
2、关联查询,直接sql中体现两表关联,一次查询即可实现结果。主表信息有冗余。
新闻热点
疑难解答