Esta entrada muestra el uso de las anotaciones de JPA implementadas con Hibernate 3, la estructura del proyecto en eclipse es la siguiente
Al terminar se encuentra el script SQL y codigo en java.
Las librerias importadas son las siguientes
hibernate3.jar
dom4j-1.6.1.jar
log4j-1.2.15.jar
slf4j-api-1.4.2.jar
slf4j-log4j12-1.4.2.jar
commons-collections-3.1.jar
javassist-3.4.GA.jar
antlr-2.7.6.jar
jta-1.1.jar
Las siguientes tres son para el uso de las anotaciones JPA en Hibernate
hibernate-annotations.jar
hibernate-commons-annotations.jar
persistence.jar
Este jar se usa para la conexion con Derby
derbyclient.jar
Iniciamos la construccion de la clase HibernateUtil el cual nos provee un sessionFactory
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
}
Hay que destacar que en este ejemplo no usamos
Configuration().configure().buildSessionFactory();
Si no que usamos AnnotationConfiguration
AnnotationConfiguration().configure().buildSessionFactory();
Usamos las anotaciones JPA en nuestra clase Persona
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table (name="PERSONA")
public class Persona {
@Id
@Column(name="ID_PERSONA")
private Long idPersona;
@Column (name="NOMBRE" , nullable=false)
private String nombre;
@Column (name="APELLIDOP", nullable=false)
private String apellidoPaterno;
@Column (name="EDAD")
private Integer edad;
public Long getIdPersona() {
return idPersona;
}
public void setIdPersona(Long idPersona) {
this.idPersona = idPersona;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
public Integer getEdad() {
return edad;
}
public void setEdad(Integer edad) {
this.edad = edad;
}
}
Usamos las anotaciones de JPA @Entity, @Table, @Id, @Column, estas son muy intuitivas y faciles de entender.
El archivo hibernate.cfg.xml es el mismo pero con una excepcion
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
<property name="connection.url">jdbc:derby://localhost:1521/dracof</property>
<property name="connection.user">dracof</property>
<property name="connection.password">dracof</property>
<property name="current_session_context_class">thread</property>
<property name="dialect">org.hibernate.dialect.DerbyDialect</property>
<property name="show_sql">true</property>
<mapping class="org.dracof.hibernate.annotations.Persona"/>
</session-factory>
</hibernate-configuration>
El mapeo ya no lo hacemos con mapping resource y no creamos el archivo Persona.hbm.xml
<mapping resource="org/dracof/hibernate/relacional/Persona.hbm.xml"/>
Si no con
<mapping class="org.dracof.hibernate.annotations.Persona"/>
Y con esto terminamos, hacemos un main con el siguiente codigo
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.getTransaction();
tx.begin();
Persona persona = (Persona)session.load(Persona.class, new Long(1));
System.out.println("Nombre: " + persona.getNombre());
tx.commit();
}
Obteniendo como resultado
Hibernate: select persona0_.ID_PERSONA as ID1_0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_, persona0_.NOMBRE as NOMBRE0_0_ from PERSONA persona0_ where persona0_.ID_PERSONA=?
Nombre: DRACOF
Codigo SQL
Codigo Java
Suerte.
muy util graciasss
ResponderEliminarlimpio y claro!!!
ResponderEliminarmuchas gracias