Hibernate es un marco Java que implementa el patrón de diseño ORM (Object Relational Mapping). Se utiliza para asignar objetos Java a una base de datos relacional. Utiliza internamente JDBC (Java Database Connectivity), JTA (Java Transaction API) y JNDI (Java Naming and Directory Interface). Ayuda a que los objetos Java persistan en la base de datos sin perder su estado, por lo que se llama Hibernate. Se puede usar para realizar todas las operaciones CRUD sin tener que escribir consultas SQL. El marco de Hibernate se puede utilizar para crear tablas en la base de datos automáticamente. La siguiente propiedad se agrega en el archivo de configuración para crear tablas automáticamente.
<nombre de la propiedad=”hibernate.hbm2ddl.auto”>crear</propiedad>
La propiedad “hibernate.hbm2ddl.auto” acepta los siguientes valores:
- create : si se crea el valor, Hibernate crea una nueva tabla en la base de datos cuando se crea el objeto SessionFactory. En caso de que exista una tabla en la base de datos con el mismo nombre, elimina la tabla junto con los datos y crea una nueva tabla.
- actualizar : si el valor se actualiza, hibernate primero valida si la tabla está presente en la base de datos o no, si está presente modifica esa tabla según los cambios, si no crea una nueva.
- validar : si el valor se valida, hibernate solo verifica si la tabla está presente o no, si la tabla no existe y luego lanza una excepción.
- create-drop : si el valor es create-drop, hibernate crea una nueva tabla cuando se crea SessionFactory, realiza la operación y elimina la tabla cuando se destruye SessionFactory. Este valor se utiliza para probar el código de hibernación.
- none : No realiza ningún cambio en el esquema.
A continuación se muestra un ejemplo que demuestra la creación automática de tablas en hibernación utilizando la base de datos MySQL.
Proyecto de ejemplo
archivo hibernate.cfg.xml :
XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.hbm2ddl.auto">create</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <mapping resource="Student.hbm.xml"></mapping> </session-factory> </hibernate-configuration>
Archivo estudiante.hbm.xml :
XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="p1.Student" table="student"> <id name="id"></id> <property name="name"></property> </class> </hibernate-mapping>
Archivo estudiante.java :
Java
package p1; public class Student { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Archivo de prueba.java :
Java
package p1; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import beans.Student; public class Test { public static void main(String... args) { try { Configuration config=new Configuration(); config.configure(); System.out.println(config); SessionFactory sessionFactory=config.buildSessionFactory(); Session session=sessionFactory.openSession(); System.out.println(session); Student s=new Student(); s.setId(101); s.setName("Raghav"); session.save(s); Transaction t=session.beginTransaction(); t.commit(); } catch(Exception e) { System.out.println(e); } } }
Producción:
Se crea una nueva tabla ‘estudiante’ y los datos del objeto de clase Estudiante se asignan a la tabla.
Publicación traducida automáticamente
Artículo escrito por payalrathee35 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA