Tengo dos tablas, message y mesage_status (es una duda que me interesa aclarar porque tengo un montón de tablas de este estado tabla-estadotabla).
Código PHP:
--
-- Estructura de tabla para la tabla `message_status`
--
CREATE TABLE IF NOT EXISTS message_status (
id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
name char(25) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Estructura de tabla para la tabla `messages`
--
CREATE TABLE IF NOT EXISTS `messages` (
id smallint(5) unsigned NOT NULL AUTO_INCREMENT,
name char(150) NOT NULL DEFAULT '',
email char(150) NOT NULL DEFAULT '',
issue char(150) NOT NULL DEFAULT '',
message text NOT NULL,
ip char(20) NOT NULL DEFAULT '',
user_agent char(200) NOT NULL DEFAULT '',
moment datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
message_status_id tinyint(3) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (id),
FOREIGN KEY (message_status_id) REFERENCES message_status(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Código PHP:
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.JoinColumn;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name="MESSAGES")
public class Message {
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="name")
@NotEmpty(message="El Nombre es obligatorio") @Size(min=3, max=150, message="El Nombre debe tener entre 3 y 150 caracteres")
private String name;
@Column(name="email")
@NotEmpty(message="El Email es obligatorio") @Email(message="El Email no es válido")
private String email;
@Column(name="issue")
@NotEmpty(message="El Asunto es obligatorio") @Size(min=3, max=150, message="El Asunto debe tener entre 3 y 150 caracteres")
private String issue;
@Column(name="message")
@NotEmpty(message="El Mensaje es obligatorio") @Size(min=3, max=150, message="El Mensaje debe tener entre 3 y 150 caracteres")
private String message;
@Column(name="ip")
private String ip;
@Column(name="user_agent")
private String user_agent;
@Column(name="moment")
private Date moment;
@ManyToOne
@JoinColumn(name="message_status_id")
private MessageStatus messagestatus;
/**
*
*/
public Message() {
}
/**
*
* @param id
*/
public Message(long id) {
this.setId(id);
}
/**
*
* @param id
*/
public void setId(long id) {
this.id = id;
}
/**
*
* @return
*/
public long getId() {
return id;
}
/**
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return
*/
public String getName() {
return name;
}
/**
*
* @param email
*/
public void setEmail(String email) {
this.email = email;
}
/**
*
* @return
*/
public String getEmail() {
return email;
}
/**
*
* @param issue
*/
public void setIssue(String issue) {
this.issue = issue;
}
/**
*
* @return
*/
public String getIssue() {
return issue;
}
/**
*
* @param message
*/
public void setMessage(String message) {
this.message = message;
}
/**
*
* @return
*/
public String getMessage() {
return message;
}
/**
*
* @param ip
*/
public void setIp(String ip) {
this.ip = ip;
}
/**
*
* @return
*/
public String getIp() {
return ip;
}
/**
*
* @param user_agent
*/
public void setUser_agent(String user_agent) {
this.user_agent = user_agent;
}
/**
*
* @return
*/
public String getUser_agent() {
return user_agent;
}
/**
*
* @param moment
*/
public void setMoment(Date moment) {
this.moment = moment;
}
/**
*
* @return
*/
public Date getMoment() {
return moment;
}
/**
*
* @param messagestatus
*/
public void setMessagestatus(MessageStatus messagestatus) {
this.messagestatus = messagestatus;
}
/**
*
* @return
*/
public MessageStatus getMessagestatus() {
return messagestatus;
}
}
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
@Table(name="MESSAGE_STATUS")
public class MessageStatus {
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="name")
@NotEmpty(message="El Nombre es obligatorio") @Size(min=3, max=150, message="El Nombre debe tener entre 3 y 150 caracteres")
private String name;
public void setId(long id) {
this.id = id;
}
public long getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
También he visto que hay relaciones bidireccionales, ¿en este caso no seria necesaria no?¿provocaría lentitud en la aplicación este tipo de relaciones?
Siento si estas dudas son muy triviales, es que estoy acostumbrado a venir de php, y con guardar el id de la foreign key me basta.