2007-03-01から1ヶ月間の記事一覧

GeneratorType.SEQUENCE の指定方法

次のように指定していたが間違いだった。 @Id(generate=GeneratorType.SEQUENCE, generator="id_seq") public long getId() { ・・・ } 正しくは・・・ @SequenceGenerator(name="SEQ", sequenceName="id_seq") public class UserInfo { ・・・ @Id @Generat…

GeneratorType.SEQUENCE の使い方

GeneratorType.SEQUENCE の使い方が間違っていた為、忘れないようにメモ。

オープン・クローズドの原則(OCP)

OCP:The Open-Closed Principle ソフトウェアの構成要素(クラス、モジュール、関数など)は拡張に対して開いて(OPEN)いて、修正に対して閉じて(CLOSE)いなければならない。 拡張に対して開いているとは? モジュールの振る舞いを拡張できるということ…

リスコフの置換原則(LSP)

LSP:Liskov Substitution Principle 派生型はその基本型と置換可能でなければならない リスコフの置換原則は、継承に関する原則である。 継承は、OCPの要である「抽象」と「ポリモーフィズム」をサポートする鍵となるメカニズムである為、OCPと関係のある原…

単一責任の原則(SRP)

SRP:The Single Responsibility Principle クラスを変更する理由は1つ以上存在してはならない。2つ以上存在すると何が良くないのか? 通常、仕様変更が発生すると、クラスの役割が変化する。 このとき、クラスの役割が1つであれば、どのように変化したのか…

ソフウェアの腐敗

ソフトウェア開発において、もっとも不確定な要素は仕様である。 最初の設計時点では想定していなかった仕様変更により、設計はじわじわと劣化していく。 なんとか変更に対応したとしても、初期に設計思想に違反している為、こうした変更が積み重なってくる…

ソフトウェアの設計とは何か?

ソフトウェアシステム設計の主要なドキュメントはソースコードである。 ソースコードの構造を表現するダイアグラムは、設計の補助に過ぎず、設計そのものではない。 URLなどのダイアグラムは設計の一部であるが、結局のところそれを具現化したものはソースコ…

アジャイル開発の奥義

アジャイルソフトウェア開発の奥義作者: ロバート・C・マーチン,瀬谷啓介出版社/メーカー: ソフトバンククリエイティブ発売日: 2004/06/30メディア: 単行本購入: 3人 クリック: 236回この商品を含むブログ (148件) を見るという本を購入した。 とりあえず、…

ナチャラルキー(自然キー)とサロゲートキー(代替キー)

DB

テーブルの主キーを決める場合、ナチャラルキー(自然キー)とサロゲートキー(代替キー)というアプローチがある。ナチャラルキーとは、システムの外部から入力される社員番号のような業務上意味のあるキーであり、サロゲートキーとは、単にレコードをユニ…

ナチャラルキー(自然キー)とサロゲートキー(代替キー)

知り合いがサロゲートキーについてどうこう言ってたので調べてみた。

JPAで複合キーを使う

メモだけ。 package sample.jpa.domain; import javax.persistence.Embeddable; @Embeddable public class EmployeePK implements Serializable { private long companyId; private long employeeId; public EmployeePK() { } public long getCompanyId() { …

エンティティのライフサイクル

エンティティには、New、Managed、Detached、Removedという4つの状態があり、永続コンテキストへ関連付けられているManaged、Removedと関連付けられていないNew、Detachedに分類できる。 状態は、EntityManagerのメソッドの呼び出しなどで上記のように状態遷…

キーワード

マッピング JavaクラスとRDBのレコードをマッピングする。 マッピングは、アノテーションやXMLで行なう。 EntityManager RDBへのアクセスは、EntityManagerというクラスの提供するメソッドを介して行なう。 参照系) find()、getReference()、createNamedQue…

JPA(Java Persistence API)

JPA(Java Persistence API)は、Java EE 5のJSR 220で標準化されたEJB3.0の一部であり、ORMのJava標準仕様です。 仕様である為、実装は別に存在し、現時点では次の実装が有名。 TopLink Essentials Hibernate OpenJPA

JPAにさわる

eclipseがOutOfMemoryErrorで落ちた・・・

Eclipseを使用していたら、次のようなエラーで落ちた。 Exception: java.lang.OutOfMemoryError: PermGen space. Permanent領域が不足している為、eclipse.iniへ以下を追加し、対応した。 -XX:PermSize=64m -XX:MaxPermSize=256m

H2にさわる

DB H2

H2 Database EngineはJavaで記述されたSQLデータベースエンジンで、 もともとHypersonic SQL(今のHSQLDB)の主要開発者である、Thomas Mueller氏によって開発された。 他のデータベースと比較すると、組み込み用途にもサーバ用途にも使うことができる上、フ…

WEBでの文字エンコーディングの指定

Web

WEBで文字エンコーディングを指定するには、HTTPヘッダのCntent-Typeで文字エンコーディングを指定する方法と、HTMLファイルのMetaタグで文字エンコーディングを指定する方法の二種類がある。 両方ともに指定されている場合には、HTTPヘッダの指定が優先され…

WEBでの文字エンコーディングの指定

HTMLのMetaタグでShift_JISを指定しているのに、ブラウザがUTF-8と解釈してしまう問題が発生した為、解決策をメモ。 なんか昔も同じことしてた気がするし・・・