Annotations

May 12th, 2008

After starting my new job I have been working alot with Java Annotations (EJB) so below is a quick reference of the 4 Common Data ones.  This information has been taken partly from the Java Documentation and from my own Experience using both JPA and Hibernate.  Each of the examples below deals with 2 Classes which we will call class_1 and class_2 affectionately.  

@OneToMany -> @ManyToOne
A class_1 can have many class_2

@OneToMany(targetEntity=com.class_2.class, cascade=ALL, fetch=FetchType.EAGER)
@JoinColumn(name=”class_2_id”)
private Set<class_2> c2s = new HashSet();

<flip side>

@ManyToOne(targetEntity=com.class_1.class, cascade=ALL, fetch=FetchType.EAGER)
@JoinColumn(name=”class_2_id”, updatable=false, insertable=false)
private class_1 c1; 

@OneToOne
A class_1 can have one class_2

private class_2 c2;

<flip side>

@OneToOne (targetEntity=struts.hibernate.model.class_1.class, fetch=FetchType.EAGER, mappedBy=”c2″)
private class_1 c1; 

@ManyToMany
A class_1 can have many class_2 and a class_2 can have many class_1
*Note - This configuration uses a join table

@ManyToMany
@JoinTable(name=”class_1_to_class_2″
 joinColumns=
@JoinColumn(name=”class_1_id”, referencedColumnName=”ID”),
inverseJoinColumns=
@JoinColumn(name=”class_2_id”, referencedColumnName=”ID”))
private Set<class_2> c2s = new HashSet();

<flip side>

 

@ManyToMany
@JoinTable(name=”class_1_to_class_2″
 joinColumns=
@JoinColumn(name=”class_2_id”, referencedColumnName=”ID”),
inverseJoinColumns=
@JoinColumn(name=”class_1_id”, referencedColumnName=”ID”))
private Set<class_1> c1s = new HashSet();

Leave a Reply

You must be logged in to post a comment.