Implementación de la vista materializada a través del programa Java

Requisitos previos: JDBC , vistas SQL .

Una vista es simplemente cualquier consulta SELECT a la que se le ha dado un nombre y se ha guardado en la base de datos. Por esta razón, una vista a veces se denomina consulta con nombre o consulta almacenada.
Las vistas materializadas son las vistas que son similares a las vistas normales excepto por una propiedad que se actualizan más rápido. Estas vistas se actualizan automáticamente cuando ocurre alguna actualización en la tabla maestra.

Supongamos que si se produjo alguna inserción en la tabla maestra, la vista materializada también se actualiza. Desde el siguiente programa, hemos intentado mostrar cómo funcionan las vistas materializadas. La implementación real puede diferir en cada software de base de datos.

// Java Program to implementat
// Materialized view
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import java.sql.PreparedStatement;
  
public class Materialised_View {
    public static void main(String[] args)
    {
        // Declare connection and resultset objects
        Connection conn;
        ResultSet rs;
  
        // Declare statement objects
        Statement stmt, stmt1;
  
        // query to retrieve the details of student table
        String query = "select * from student;";
        Scanner sc = new Scanner(System.in);
        System.out.println("Student Table is Created as Follows:\n");
        System.out.println
              ("*******Student*********\nsid\tsname\taddress\n---- ");
        try {
  
            // Register the mysql driver
            DriverManager.registerDriver(new com.mysql.jdbc.Driver());
  
            // get the connection
            conn = DriverManager.getConnection
             ("jdbc:mysql:// localhost:3306/adbms_practicals", "root", "kernel");
  
            // Initialize the statement object
            stmt = conn.createStatement();
  
            // execute the query and store the result
            rs = stmt.executeQuery("select * from student;");
  
            while (rs.next()) {
                // Iterate through the result set and display
                // content of each row of student table.
                System.out.println(rs.getString(1) + "\t" 
                   + rs.getString(2) + "\t" + rs.getString(3));
            }
  
            System.out.println("\n\nView of this Student Table is As Follows:");
            rs = stmt.executeQuery("select * from Student_Data2;");
            System.out.println
             ("\n***********Student View*******\nsid\tsname\taddress\n-------");
            while (rs.next()) {
                // Iterate through the result set and display
                // content of view of student table.
                System.out.println(rs.getString(1) + "\t" 
                  + rs.getString(2) + "\t" + rs.getString(3));
            }
            while (true) {
  
                // Perform the operations on table
                System.out.println("Menu:\n1.Insert\n2.Delete\n3.
                 See Changes in View Student_Data2\n4.Exit\nEnter Choice:");
  
                // take the input from user to insert / delete / see changes
                int ch = sc.nextInt(); 
  
                int sid;
                String sname = "";
                String address = "";
                switch (ch) {
                case 1:
                    System.out.println("Enter sid:");
                    sid = sc.nextInt();
  
                    System.out.println("Enter sname:");
                    sname = sc.nextLine();
  
                    System.out.println("Enter address:");
                    address = sc.nextLine();
  
                    // create the preparedStatement object and set the values
                    PreparedStatement st3 = conn.prepareStatement
                      ("insert into student values(?, ?, ?);");
  
                    st3.setInt(1, sid);
                    st3.setString(2, sname);
                    st3.setString(3, address);
                    st3.executeUpdate();
  
                    // create the preparedStatement object and set the values
                    PreparedStatement st1 = conn.prepareStatement
                        ("insert into Student_Data2 values(?, ?, ?);");
  
                    st1.setInt(1, sid);
                    st1.setString(2, sname);
                    st1.setString(3, address);
                    st1.executeUpdate(); // execute the preparedStatement to insert row
                    System.out.println("row inserted");
  
                    break;
  
                case 2:
                    System.out.println("Enter sid to be deleted:");
                    sid = sc.nextInt();
  
                    // create the preparedStatement object and set the values
                    PreparedStatement st4 = conn.prepareStatement
                      ("delete from Student_Data2 where sid=?;");
                    st4.setInt(1, sid);
  
                    PreparedStatement st2 = conn.prepareStatement
                        ("delete from student where sid=?");
                    st2.setInt(1, sid);
  
                    // execute the preparedStatement to delete row
                    st2.executeUpdate();
  
                    System.out.println("row deleted");
                    break;
  
                case 3:
                    System.out.println("\n\nChanges Done in the 
                     Student table also Affects the View Student_Data2");
  
                    rs = stmt.executeQuery("select * from Student_Data2;");
                    System.out.println
                      ("\n*****Student*******\nsid\tsname\taddress\n--------");
                    while (rs.next()) {
  
                        // Iterate through the result set and display
                        // recent changes of the table
                            // which got reflected in view.
                            System.out.println(rs.getString(1) + "\t" 
                            + rs.getString(2) + "\t" + rs.getString(3));
                    }
                    break;
  
                case 4:
                    System.exit(0); // User wants to exit
                    break;
                }
            }
        }
        catch (Exception e) { // catch all exceptions here.
            System.out.println(e);
        }
    }
}

Producción:

Student Table is Created as Follows:
***********Student**************
sid    sname    address
-----------------------------------------------
131    Rohit Pawar    Mumbai
141    Ashish Mane    Pune
152    Sagar Gore    Mumbai
155    Nitesh Chaure    Nagpur
501    Ritesh Dev    Chennai
531    Dev Khire    Delhi

View of this Student Table is As Follows:
***********Student**************
sid    sname    address
-----------------------------------------------
131    Rohit Pawar    Mumbai
141    Ashish Mane    Pune
152    Sagar Gore    Mumbai
155    Nitesh Chaure    Nagpur
501    Ritesh Dev    Chennai
531    Dev Khire    Delhi

Menu:
1.Insert
2.Delete
3.See Changes in View Student_Data2
4.Exit
Enter Choice:1

Enter sid: 123
Enter sname: Amit Kumar
Enter address: Nanded
row inserted

Menu:
1.Insert
2.Delete
3.See Changes in View Student_Data2
4.Exit
Enter Choice:3

Changes Done in the Student table also Affects the View Student_Data2
***********Student**************
sid    sname    address
-----------------------------------------------
131    Rohit Pawar    Mumbai
141    Ashish Mane    Pune
152    Sagar Gore    Mumbai
155    Nitesh Chaure    Nagpur
501    Ritesh Dev    Chennai
531    Dev Khire    Delhi
123    Amit Kumar Nanded

Menu:
1.Insert
2.Delete
3.See Changes in View Student_Data2
4.Exit
Enter Choice:2

Enter sid to be deleted: 123
row deleted

Menu:
1.Insert
2.Delete
3.See Changes in View Student_Data2
4.Exit
Enter Choice:3

Changes Done in the Student table also Affects the View Student_Data2
***********Student**************
sid    sname    address
-----------------------------------------------
131    Rohit Pawar    Mumbai
141    Ashish Mane    Pune
152    Sagar Gore    Mumbai
155    Nitesh Chaure    Nagpur
501    Ritesh Dev    Chennai
531    Dev Khire    Delhi

Menu:
1.Insert
2.Delete
3.See Changes in View Student_Data2
4.Exit
Enter Choice:4

Explicación :
la tabla de estudiantes y la vista de estudiantes se imprimen al comienzo de la salida. Luego, si el usuario selecciona la opción 1 para insertar los datos en la tabla de estudiantes ‘123 Amit Kumar Nanded’, esta nueva fila se inserta en la tabla. Luego, el usuario selecciona la tercera opción para ver los cambios reflejados en la vista del estudiante o no, después de seleccionar la tercera opción, podemos ver que la misma entrada también se agregó en la Vista del estudiante. Luego, el usuario selecciona la segunda opción y proporciona el sid = 123 como entrada para eliminar la entrada de la tabla de Estudiantes. De manera similar, pudimos ver que la misma entrada también se eliminó de la Vista de Estudiantes. Así es como funciona Actualizar vistas materializadas.

Tenga en cuenta que para cada software de base de datos, la implementación interna puede diferir.

Publicación traducida automáticamente

Artículo escrito por Vaibhav Kadam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *