This plugins generates EJB3 entities.
Suppose we have two tables in a database :
Here is the corresponding MySQL DDL :
CREATE TABLE city ( id_city int(11) NOT NULL auto_increment, name varchar(50) NOT NULL, PRIMARY KEY (id_city) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE person ( id_person int(11) NOT NULL auto_increment, name varchar(50) NOT NULL, first_name varchar(50) NOT NULL, age int(11) NOT NULL, id_city int(11) NOT NULL, PRIMARY KEY (id_person), KEY fk_person_city (id_city), CONSTRAINT fk_person_city FOREIGN KEY (id_city) REFERENCES city (id_city) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
A person lives in a city, and for each city there are many persons living in it. So we have a many-to-one relationship.
EJB3 plugin generate two entities, City and Person :
package com.salto.ejb3; import java.util.List; import java.io.Serializable; import java.sql.Timestamp; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Column; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Transient; import javax.persistence.Embeddable; /** * <p>Pojo mapping table city</p> * <p></p> * * <p>Generated at Tue Feb 06 10:43:30 CET 2007</p> * @author Salto-db Generator Ant v1.0.15 / EJB3 * */ @Entity @Table(name = "city", catalog = "sdb") @SuppressWarnings("serial") public class City implements Serializable { /** * Attribute idCity. */ private Integer idCity; /** * Attribute name. */ private String name; /** * List of Person */ private List<Person> persons = null; /** * @return idCity */ @Basic @Id @GeneratedValue @Column(name = "id_city") public Integer getIdCity() { return idCity; } /** * @param idCity new value for idCity */ public void setIdCity(Integer idCity) { this.idCity = idCity; } /** * @return name */ @Basic @Column(name = "name") public String getName() { return name; } /** * @param name new value for name */ public void setName(String name) { this.name = name; } /** * Get the list of Person */ @OneToMany(mappedBy="city") public List<Person> getPersons() { return this.persons; } /** * Set the list of Person */ public void setPersons(List<Person> persons) { this.persons = persons; } }
package com.salto.ejb3; import java.util.List; import java.io.Serializable; import java.sql.Timestamp; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Column; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Transient; import javax.persistence.Embeddable; /** * <p>Pojo mapping table person</p> * <p></p> * * <p>Generated at Tue Feb 06 10:43:30 CET 2007</p> * @author Salto-db Generator Ant v1.0.15 / EJB3 * */ @Entity @Table(name = "person", catalog = "sdb") @SuppressWarnings("serial") public class Person implements Serializable { /** * Attribute idPerson. */ private Integer idPerson; /** * Attribute name. */ private String name; /** * Attribute firstName. */ private String firstName; /** * Attribute age. */ private Integer age; /** * Attribute city */ private City city; /** * @return idPerson */ @Basic @Id @GeneratedValue @Column(name = "id_person") public Integer getIdPerson() { return idPerson; } /** * @param idPerson new value for idPerson */ public void setIdPerson(Integer idPerson) { this.idPerson = idPerson; } /** * @return name */ @Basic @Column(name = "name") public String getName() { return name; } /** * @param name new value for name */ public void setName(String name) { this.name = name; } /** * @return firstName */ @Basic @Column(name = "first_name") public String getFirstName() { return firstName; } /** * @param firstName new value for firstName */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return age */ @Basic @Column(name = "age") public Integer getAge() { return age; } /** * @param age new value for age */ public void setAge(Integer age) { this.age = age; } /** * get city */ @ManyToOne @JoinColumn(name = "id_city") public City getCity() { return this.city; } /** * set city */ public void setCity(City city) { this.city = city; } }
Once entities are generated you can use them with any EJB3 persistence manager, such as Hibernate annotations, toplink, and so on.