私は最初のDAOプログラムを作成しようとしています。 私のデータベースでは、PROJECTとMILESTONEという2つのテーブルを作成しました。通常、私はプロジェクトとマイルストーンとの間に集約関係を持っています。プロジェクトは多くのマイルストーンを持つことができますが、マイルストーンは必然的に1つのプロジェクトのみに影響されます。JAVA(DAO)とSQLにおける集約関係
私は2つの主要な質問があります。
1)SQLテーブルでは、それは私がPROJECTIDに制約(外部キー)を追加しなければならなかったことを意味し、マイルストーンテーブルへの外部キーを関連付けるのでしょうか? これまで、私はマイルストーンテーブルに "projectid"という名前の列を持つことを選択しました。私の意見では、それをすれば簡単です。
2)私はマイルストーンオブジェクトを作成すると、それはPROJECTIDをspecifiyするコンパルソリーですので、私はこのコンストラクタを書き込もうとしました:
public Milestone (String name, String description, String projectId) throws SQLException, ClassNotFoundException {
this.name = name;
this.description = description;
ProjectDAOImpl proj = new ProjectDAOImpl();
// "proj.findById(projectId)" is to verify if a real project exist having the specified id
if ((proj.findById(projectId))!= null) {
this.projectId = projectId;
}
else {
return null; //is it correct to do that in a constructor??
}
}
ここproblemeは、私は、この条件を翻訳することができますかわかりませんさJavaで: "この指定されたIDを持つ既存のプロジェクトがある場合、マイルストーンはこのプロジェクトに影響を与えます。そうでなければ、マイルストーンオブジェクトは作成されません"。対応するプロジェクトがない場合、オブジェクトを作成しないようにコンストラクタにどのように伝えることができますか?