Hoy aprendí a agregar, eliminar, modificar y verificar la base de datos a través de Hibernate. Permítanme presentarlo brevemente:
Primero cree una clase de estudiante:
paquete com.hibernate.model; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.generatedValue; import javax.persistence.id; import javax.persistence.table; @Entity @table @table (nombre = "_Teacher") Public Teacher {privado privado ID ID ID AGE; name; Birthplace; @id @GeneratedValue @Column (name = "_id") public int getId () {return id;} public void setid (int id) {this.id = id;}@column (name = "_name") public string getName () {return name;} public void setName (string name) {this.name;}@columna (name (nombre name () {name de return;} public getAge () {return Age;} public void setAge (int a age) {this.age = age;}@column (name = "_birthplace") public String getBirthplace () {return birthace;} public void setBirthace (string birthplace) {this.birthplace = birthplace;}} Luego cree un caso de prueba de maestro de tipo Junit:
Hablemos sobre el método session.save () primero, es decir, agregar:
paquete com.hibernate.model; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionFactory; import org.hibernate.cfg.annotationConfiguration; import org.junit.afterclass; import org.junit.beforeclass; import static sessionFactory sf = null; @beforeclass public static void beforeclass () {try {sf = new AnnotationConfiguration (). configure (). BuildSessionFactory (); // Es mejor obtener la excepción aquí, porque hay un error que a veces aparece y a veces no aparece} Catch (Exception E) {E.PrintstAn testSave () {// aumenta el maestro t = nuevo maestro (); t.setage (23); t.setName ("moluo"); t.setBirthplace ("HuangShan"); sessionssess = sf.getCurrentSession (); session.begintransaction (); session.save (t); session.getTransaction (). AfterClass () {sf.close ();}}Resultados brillantes:
Hablemos sobre el método session.delete (), es decir, eliminar:
@Test public void testDelete () {// Eliminar maestro t = nuevo maestro (); t.setid (2); session session = sf.getCurrentSession (); session.beGinTransaction (); session.delete (t); session.getTransaction (). Commit ();};Resultados brillantes:
Luego, vaya a session.get (), es decir, verifique:
@Test public void testget () {// get session session = sf.getCurrentSession (); session.BeginTransaction (); Maestro t = (maestro) session.get (maestro.class, 1); System.out.println ("Nombre:"+T.getName ()); session.getTransaction (). Commit (); }Resultados brillantes:
Hibernate: Seleccione Profesor0 _._ id como columna1_1_0_, maestro0 _._ edad como column2_1_0_, maestro0 _._ nacimiento como column3_1_0_, maestro0 _._ nombre como column4_1_0_ de _teacher maestro0_ donde maestro0 _._ id =? El nombre es: Moluo
Tomemos otro método de consulta: session.load ():
@Test public void testLoad () {// Load session session = sf.getCurrentSession (); session.BeginTransaction (); Maestro t = (maestro) session.load (maestro.class, 1); System.out.println ("Nombre:"+T.getName ()); session.getTransaction (). Commit (); }Resultados brillantes:
Hibernate: Seleccione Profesor0 _._ id como columna1_1_0_, maestro0 _._ edad como column2_1_0_, maestro0 _._ nacimiento como column3_1_0_, maestro0 _._ nombre como column4_1_0_ de _teacher maestro0_ donde maestro0 _._ id =? El nombre es: Moluo
Aquí explicamos la diferencia entre estas dos consultas: en primer lugar, cuando el objeto a la consulta no existe, la información devuelta es diferente. Get Method regresará: java.lang.nullpointerexception
El método de carga volverá: org.hibernate.ObjectNotFoundException: norowwithTheGivenIdentifieRexists
En segundo lugar, la carga devuelve un objeto proxy, y las declaraciones SQL se emitirán cuando realmente se use; Además, obtenga datos de cargas directamente desde la base de datos, sin demora.
Finalmente, hablemos sobre los métodos de actualización más utilizados y actualicelos a través de declaraciones HQL:
@Test public void topupDate () {// Session de actualización Session = Sf.getCurrentSession (); session.BeginTransaction (); String url = "actualizar maestro t establecer t.birthplace = 'anhui' donde id = 1"; // Tenga en cuenta que el maestro aquí debe ser el nombre del objeto, no el nombre de la tabla, t es el alias de la consulta de objeto q = session.createQuery (url); // El paquete importado aquí es: importar org.hibernate.query; q.ExecuteUpdate (); session.getTransaction (). Commit (); }Resultados brillantes:
A través de la actualización, la ciudad natal de Moro ha sido actualizada desde Huangshan hasta Anhui ...
De hecho, existe el método de actualización de session.update (), pero este método de actualización es solo este método de actualización. Si solo actualiza una parte de las columnas a la vez, este método de actualización actualizará todas las columnas, lo que no es muy eficiente, por lo que no se recomienda usarlas. Por supuesto, también hay formas de compensarlos. Por ejemplo, si está utilizando XML, puede establecer update = "false" en la etiqueta de propiedad de una columna que no desea actualizarse en el archivo de configuración; Además, también puede establecer actualizaciones dinámicas después de la clase del archivo de configuración: Dynamic-Update = "True"; Por supuesto, si está usando anotación, puede establecer @column (update = "false"); De hecho, estos no son flexibles, y el uso de HQL es el mejor, por lo que solo el código de actualización de HQL se publica aquí.
Resumir
Lo anterior es todo el contenido de este artículo sobre el análisis del ejemplo de Hibernate de agregar, eliminar, modificar y buscar operaciones a través de la sesión. Espero que sea útil para todos. Los amigos interesados pueden referirse a este sitio:
Aprenda rápidamente sobre la sesión en Hibernate
Código de instancia de anotación de nivel de atributo hibernado
Hibernate usa HBM.xml para configurar el análisis de relaciones de mapeo
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!