以下のクラス図のように、求人ポータルのユースケースをモデル化しようとしました。再利用を希望する求職者だけでなく、仕事でもスキル エンティティを共有できるようにしました。
スキルを共有するので、oo のデザインを修正しました。これは、1:N ではなく M:N の関係を意味すると思います。
- http://imagebin.org/219822 (Skill との M:N 関係で改訂)
- http://imagebin.org/219680 (Skill と 1:N の関係を持つ古い)
質問:
hibernate を使用して以下のことを行うにはどうすればよいですか? SQL に頼る必要がありますか?
- Skill は M:N の関係にあるため、関連テーブル JobSkill と SeekerSkill が必要になります。データベース内の既存のスキルを使用できるように、求人または求職者のインスタンスを作成する方法は?
- 仕事のスキル要件が候補者のスキルのサブセットになるようにスキル マッチングを行う必要があります。 a) 雇用者 e1: すべての候補者を見つける - 1{
仕事
+ 1{候補者}N }N
+ 雇用主 }N
この場合のビジネス サービス クラスを JobPortal として追加し、いくつかのメソッドを以下の疑似コードとして追加することを考えています。メソッドfindJobsForSeekerに必要な HQL クエリに答えることができる場合:
public class JobPortal {
public int createEmployer(String name, Address address) {
Employer e = null;
HBUtil.create(e = new Employer(name, address));
return e.getId();
}
public void addJobToEmployer(int empid, String jobName, String[][] skills) {
Employee e = HBUtil.get(empid, Employee.class);
Job j = new Job(jobName);
Skill s = null;
for(int i=0; i<skills.length; i++) {
s = HBUtil.find(skills[i][0], skills[i][1], Skill.class);
if (null == s) {
s = new Skill(skills[0], Interger.parseInt(skills[1])); //name, experience
}
j.add(s);
}
e.add(j);
HBUtil.save(e);
}
public int createSeeker(String name) {
Seeker s = null;
DBUtil.create(s = new Seeker(name));
return s.getId();
}
public void addSkillsToSeeker(int sid, String[][] skills) {
Seeker seeker = HBUtil.get(sid, Seeker.class);
for(int i=0; i<skills.length; i++) {
s = HBUtil.find(skills[i][0], skills[i][1], Skill.class);
if (null == s) {
s = new Skill(skills[0], Interger.parseInt(skills[1])); //name, experience
}
seeker.add(s);
}
HBUtil.save(seeker);
}
public void findJobsForSeeker(int sid) {
//what HQL do use ?
}
}