«前の日記(2008-01-04) 最新 次の日記(2008-01-06)» 編集

ɥozɐʞıɥ


2008-01-05 萎えから抜けられないまま冬休みが終わるヨー [長年日記]

_ [ORM] Hibernate Annotation(ManyToMany)

昨日、とりあえずTableだけは作ったので実装。関連テーブルについてはなんかウマい事やってくれるみたい。
従業員
package org.hikazoh;
 
import java.io.Serializable;
import javax.persistence.*;
import java.util.*;
 
@Entity
@Table(name="Employee")
@NamedQuery(name="org.hikazoh.Employee",query="from org.hikazoh.Employee where lastName =:lastname")
public class Employee implements Serializable {
	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer iD;
	@Column(name="FirstName")
	private String firstName;
	@Column(name="LastName")
	private String lastName;
	@ManyToOne(targetEntity=Department.class)
	@JoinColumn(name="departmentID",referencedColumnName="ID")
	private Department department;
	@ManyToMany(targetEntity=Skill.class)
	@JoinTable(name="Emp_Skill",
			joinColumns={@JoinColumn(name="EmpID")},
			inverseJoinColumns={@JoinColumn(name="SkillID")})
	private Set skills;
 	
	public Integer getID() {
		return iD;
	}
	public void setID(Integer id) {
		iD = id;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public Department getDepartment() {
		return department;
	}
	public void setDepartment(Department department) {
		this.department = department;
	}
	public Set getSkills() {
		return skills;
	}
	public void setSkills(Set skills) {
		this.skills = skills;
	}
}
スキル
package org.hikazoh;
 
import java.io.Serializable;
import javax.persistence.*;
import java.util.*;
 
@Entity
@Table(name="Skill")
public class Skill implements Serializable {
	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer Id;
	@Column(name="NAME")
	private String Name;
	@ManyToMany(targetEntity=Employee.class)
	@JoinTable(name="Emp_Skill",
			joinColumns={@JoinColumn(name="SkillID")},
			inverseJoinColumns={@JoinColumn(name="EmpID")})
	private Set employees;
	public String getName() {
		return Name;
	}
	public void setName(String name) {
		Name = name;
	}
	public Set getEmployees() {
		return employees;
	}
	public void setEmployees(Set employees) {
		this.employees = employees;
	}
	public Integer getId() {
		return Id;
	}
}
エントリーサンプル(関連テーブルに関しては、双方向だからかな?どっちかのSetに入れておけばちゃんとINSERTしてくれました)
package org.hikazoh;
 
import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.AnnotationConfiguration;
 
public class ManyToManyTest {
 
	public static void main(String[] args) {
		SessionFactory sessionFactory =
			new AnnotationConfiguration()
			.addPackage("org.hikazoh")
			.addAnnotatedClass(Skill.class)
			.addAnnotatedClass(Employee.class)
			.addAnnotatedClass(Department.class)
			.buildSessionFactory();
		Transaction tx = null;
		Session session = sessionFactory.openSession();
		try{
			tx = session.beginTransaction();
 
			Department dept = new Department();
			dept.setName("Sales");
			session.save(dept);
			
			Employee emp = new Employee();
			emp.setFirstName("Hika");
			emp.setLastName("Zou");
			emp.setDepartment(dept);
			Skill skill = new Skill();
			skill.setName("ServerManagement");
			session.save(emp);
			Set emps = new HashSet();
			emps.add(emp);
			skill.setEmployees(emps);
			session.save(skill);
			
			tx.commit();
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("[" + e.getLocalizedMessage() + "]" );
			if ( tx != null ){
				tx.rollback();
			}
		}finally{
			session.close();
		}
		sessionFactory.close();
	}
}

_ [] 日はまた昇る (新潮文庫)


冬休みに読みました。ハードボイルドな筆致によるシニカルな作品です。

_ [] 誰がために鐘は鳴る (下巻) (新潮文庫)


上下巻を本日読了。タブンいま訳しなおすと4日間の濃密な日々はカナーリ官能な表現になりそう。内容的には好きな作品です。村上春樹の源流を辿ったような気がします。



2002|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|
«前の日記(2008-01-04) 最新 次の日記(2008-01-06)» 編集