ラベル Hibernate の投稿を表示しています。 すべての投稿を表示
ラベル Hibernate の投稿を表示しています。 すべての投稿を表示

2012-03-02

SQLAzureがいいかも!

ここ最近、クラウドのデータベースを何にしようかずっと試行錯誤してきましたが、コストならびに技術的な面でSQLAzureが妥当であると結論づけました。以下、その簡単な理由です。

圧倒的に安い
  • 100MBまで約437円/月(1Gまで約873円)
  • 受信データ転送無料(データセンターへのアップロード)
  • 送信データ16円/1GB(データセンターからのダウンロード)
という感じではっきりいって安いと思います。

Javaからもアクセス可能
マイクロソフト系言語は当然つかえますが、Javaからもアクセスできます。必要なのはJDBC(sqljdbc.jar)だけ。特別なSDKは必要ありません。

O/Rマッパー(Hibernate)が使える
RDBを使うなら当然、O/Rマッパーを使いたいところですが問題なくつかえました。JDBCのフレームワークの範囲内ですので、基本的にはなんら変わりがないということです。
欠点として他のクラウドデータベースサービスと異なり、おそらくスケーラビリティは若干低いかと思います。ただ、個人的にはそんなことはどうでもよくて、とにかくメンテナンスを気にする事無く、大学だけでなく自宅からもSQLサーバーが使えるってのはほんと嬉しいですよ。
まあ、KVSなデータベースをかっこ良く使いこなしたい気持ちもあるんですが、RDBに慣れ親しんでますしね。。。

P.S
先日、利用しようと思った矢先に、WindowsAzureのサービスが閏年バグで一斉停止しましたのはちょっと先行きが心配ですが、それでも1日後には治ってますしそのへんは安心かな。



2011-03-18

Netbeans6.9.1でのDerbyの作成について

1年くらい前に、Netbeans6.7でのDerby操作につまづいたという記事を書いたわけだが、それの改訂も含めた記事。

【症状】
Netbeans6.9あたりから、標準のDBであるDerbyに対してHibernateのエンティティクラスの自動生成をする際に、前記事での対処方法ができなくなる事象が発生。ユーザ名とパスワードを設定しておかないとデータベースが作成できなくなっており、適当にユーザ名とパスワードを設定してもデフォルトスキーマが正しく設定されない(APPをデフォルトスキーマーとしない)という状況になる。

【解決策】
試行錯誤してわかったのは、
  • ユーザ名、パスワードともにAPPとする
これで、デフォルトスキーマーがAPPとなり、Hinernateリバースエンジニアリングファイルからエンティティクラスを生成することができます。



2009-10-09

Netbeans6.7でのDerby操作につまづいた



#################################################
改訂記事を
Netbeans6.9.1でのDerbyの作成について
に書いてますので、そちらを御覧ください。
#################################################

NetbeansはDBアクセス環境を持っているから便利なんだけど、今日は初歩的なところで躓いたので悔しいから書いとく。

【症状】
Derby上に新規でDBを作成した場合、こことか見ると、"「表」、「ビュー」、「プロシージャ」の 3 つのサブフォルダがあります" とか書いてるんだけど、なんかいろんなスキーマが書いてるんだよね。これは、6.7から変わったのかな?
で、どのスキーマを使うのか、、、ということを考える必要がある。もともと埋め込まれているサンプルのデータベースをみると、データベース名と共通したスキーマが存在している。でも、Netbens上でデータベースを作成した場合それがない。だから、Hibernateのエンティティを自動生成しようとしても、うんともすんともしないという状況になったわけだ。

【解決策】
どうやら、データベース作成時のパスワードがスキーマに関係しているらしい。Netbeans上でDerbyのデータベースを作成する場合、パスワードを設定するとそれがデフォルトスキーマになってしまうようだ。たぶんNetbeansのバグだろう。だから、データベース作成時に
  • ユーザ名、パスワードをともに設定しない
  • ユーザ名だけいれて、パスワードは空白にする
という設定をすれば、APPというのがデフォルトスキーマになる。つまり、APPの中にある「表」のサブフォルダにテーブルを作成していけばいいわけだ。

なんか、この問題のおかげで、えらい時間がかかってしまった。