Get It:
Download
Change Log
Learn It:
Install
Tutorial
API Doc
Discuss It:
Mailing List
Follow It:
Code

Tutorial Part 5. 永続化クラス

web4rはElephantを利用して、永続化クラスをサポートしています。

ダウンロードとインストール

web4rはElephantに依存しています。もしまだElephantをダウンロードしていない場合、このページからv0.9をダウンロードして、設定(インストール)して下さい。

利用例

Elephantの詳細はマニュアルをご覧下さい。

(eval-when (:compile-toplevel :load-toplevel :execute)
  (asdf:oos 'asdf:load-op :elephant))
(use-package :elephant)

; データベースに接続
(open-store '(:BDB "/path/to/db"))

; 永続化クラスの定義
(defpclass blog ()
    ((title :initarg :title :accessor title :index t)
     (body  :initarg :body)))

; 永続化クラスのインスタンスは自動的に永続化される
(dotimes (x 10)
  (make-instance 'blog :title x :body x))

(let ((all (get-instances-by-class 'blog))) ; 全てのクラスインスタンスを取得
  (print (subseq all 0 3)) ; はじめの3つだけを取り出す
  (print (sort all #'< :key 'title))) ; slotでインスタンスを並び替え

; slotの値に該当するインスタンスを取得
(get-instances-by-value 'blog 'title 5)

; slotの値の範囲に該当するインスタンスを取得
(get-instances-by-range 'blog 'title 2 4)

; インスタンスの更新
(let ((i (get-instance-by-value 'blog 'title 5)))
  (setf (title i) 0))

; 全てのクラスインスタンスを破棄
(drop-instances (get-instances-by-class 'blog))