一、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中體現兩表關聯,一次查詢即可實現結果。主表信息有冗余。
新聞熱點
疑難解答