• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 將ReadWriteLock應用于緩存設計

    發表于:2008-06-26來源:作者:點擊數: 標簽:設計緩存應用
    在 Java EEdev站點( http://www.javaeedev.com )的設計中,有幾類數據是極少變化的,如ArticleCategory(文檔分類),ResourceCategory(資源分類),Board(論壇版面)。在對應的DAO實現中,總是一次性取出所有的數據,例如: ListArticleCategory getArt

    JavaEEdev站點(http://www.javaeedev.com)的設計中,有幾類數據是極少變化的,如ArticleCategory(文檔分類),ResourceCategory(資源分類),Board(論壇版面)。在對應的DAO實現中,總是一次性取出所有的數據,例如:

    List<ArticleCategory>  getArticleCategories();
      此類數據的特點是:數據量很小,讀取非常頻繁,變化卻極慢(幾天甚至幾十天才變化一次),如果每次通過DAO從數據庫獲取數據,則增加了數據庫服務器的壓力。為了在不影響整個系統結構的情況下透明地緩存這些數據,可以在Facade一層通過Proxy模式配合ReadWriteLock實現緩存,而客戶端和后臺的DAO數據訪問對象都不受影響:

    將ReadWriteLock應用于緩存設計

     

      首先,現有的中間層是由Facade接口和一個FacadeImpl具體實現構成的。對ArticleCategory的相關操作在FacadeImpl中實現如下:

    public class FacadeImpl implements Facade {
        protected CategoryDao categoryDao;
        public void setCategoryDao(CategoryDao categoryDao) {
            this.categoryDao = categoryDao;
        }
        // 讀操作:
        public ArticleCategory queryArticleCategory(Serializable id) {
            return categoryDao.queryArticleCategory(id);
        }
        // 讀操作:
        public List<ArticleCategory> queryArticleCategories() {
            return categoryDao.queryArticleCategories();
        }
        // 寫操作:
        public void createArticleCategory(ArticleCategory category) {
            categoryDao.create(category);
        }
        // 寫操作:
        public void deleteArticleCategory(ArticleCategory category) {
            categoryDao.delete(category);
        }
        // 寫操作:
        public void updateArticleCategory(ArticleCategory category) {
            categoryDao.update(category);
        }
        // 其他方法省略...
    }
      設計代理類FacadeCacheProxy,讓其實現緩存ArticleCategory的功能:

    public class FacadeCacheProxy implements Facade {
        private Facade target;
        public void setFacadeTarget(Facade target) {
            this.target = target;
        }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>