Slim3の本家サイトに書かれている内容なので、わざわざブログに書くような内容ではないのですが、書かないと忘れてしまうので!
GAEのデータストアは1Entity当たり1MB以内と決まっているわけですが、まぁアイコンみたいなものはBlobで突っ込んだほうが早そうだなと思ったので、Entityに突っ込もうと思ってbyte[]でmodelクラスに定義してみたのだけれど、いざフォームからアップロードしてみると、エラーメッセージで「500byteより下じゃないとダメよ」と怒られた。
なるほど、Blobで定義するんかなーと思ってそのようにしようとしたのだが、そもそも参考にしていたページでBlobで定義してなかったのにはなんか理由があるに違いないと思ったら、本家に理由が書いてあった訳です。Slim3はアノテーションにちょこっと書いたら、byte[]とBlobの変換処理をラップしてくれるそうです。なんと!下記のように一行足すだけです。
// hoge.model以下の適当なパッケージ内のModelクラス private byte[] icon; ↓ @Attribute(lob = true) private byte[] icon;
ちなみに、StringとTextの変換も同じのようです。
// hoge.model以下の適当なパッケージ内のModelクラス private String body; ↓ @Attribute(lob = true) private String body;
Slim3すごいなー。まだまだ全然使いこなせてない…。
今回作っているものを通じて多少はマスターしたいです。