Acerca de HSQLDB en el entorno de desarrollo de SAP Commerce Cloud

En la documentación de instalación local de SAP Commerce Cloud, se menciona HSQLDB:

HSQLDB (Base de datos SQL hipersónica) es un sistema de gestión de bases de datos relacionales (RDBMS) de código abierto, escrito íntegramente en Java, compatible con el estándar SQL y proporciona funciones de base de datos integradas y de alto rendimiento. HSQLDB es liviano, rápido, fácil de usar y tiene una amplia compatibilidad, lo que lo hace ampliamente utilizado en diversos escenarios de aplicaciones. Este artículo presentará en detalle las características y el uso de HSQLDB y demostrará sus funciones mediante ejemplos.

Características de HSQLDB

1. Base de datos integrada

Una de las características más notables de HSQLDB es su funcionalidad de base de datos integrada. Esto significa que puede integrar HSQLDB en aplicaciones Java sin la necesidad de un servidor de base de datos adicional o un proceso de instalación independiente. Este método de implementación liviano hace que HSQLDB sea muy útil en el desarrollo de prototipos y aplicaciones pequeñas.

2. Admite el estándar SQL

HSQLDB sigue los estándares SQL, por lo que es muy compatible con otros RDBMS convencionales (como MySQL, PostgreSQL, Oracle, etc.). Esto significa que puede utilizar consultas y sintaxis SQL comunes para migrar bases de datos existentes a HSQLDB o desde HSQLDB a otros sistemas de bases de datos sin realizar demasiadas modificaciones.

3. Base de datos en memoria

HSQLDB le permite almacenar la base de datos completamente en la memoria; este modo se denomina base de datos en memoria. Las bases de datos en memoria son ideales para el almacenamiento temporal de datos que requieren operaciones de lectura y escritura de alta velocidad, como entornos de prueba o ciertas aplicaciones de computación intensiva.

4. Admite almacenamiento persistente

Aunque HSQLDB admite bases de datos en memoria, también permite conservar los datos en el disco para garantizar su preservación a largo plazo. Esto hace que HSQLDB también sea muy prometedor para su uso en entornos de producción.

5. Admite múltiples métodos de conexión

HSQLDB admite múltiples métodos de conexión, incluidos JDBC (Java Database Connectivity) y ODBC (Open Database Connectivity), por lo que puede integrarse con varios lenguajes y herramientas de programación, como Java, Python, Ruby, etc.

6. Apoyar el procesamiento de transacciones

HSQLDB admite propiedades de transacción ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad), lo que lo hace adecuado para aplicaciones que requieren una gran coherencia e integridad de datos.

7. Código abierto y gratuito

HSQLDB es un software de código abierto, publicado bajo la Licencia Pública General GNU (GPL), lo que significa que puede usarlo, modificarlo y distribuirlo de forma gratuita sin preocuparse por las altas tarifas de licencia.

Uso de HSQLDB

1. Creación y conexión de bases de datos.

Para comenzar a usar HSQLDB, primero necesita crear una base de datos y establecer una conexión. Aquí hay un código de muestra usando Java que demuestra cómo crear una base de datos en memoria y conectarse a ella:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class HSQLDBExample {
    
    
    public static void main(String[] args) {
    
    
        Connection connection = null;
        try {
    
    
            // 注册HSQLDB的JDBC驱动程序
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
            
            // 创建连接(内存数据库)
            connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
            
            // 执行数据库操作
            // ...
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (connection != null) {
    
    
                try {
    
    
                    connection.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }
}

En el ejemplo anterior, primero registramos el controlador JDBC para HSQLDB y luego creamos una conexión de base de datos en memoria. La cadena de conexión "jdbc:hsqldb:mem:testdb"especifica el tipo (base de datos en memoria) y el nombre de la base de datos, así como el nombre de usuario y la contraseña.

2. Crear tabla e insertar datos.

A continuación, creemos una tabla e insertemos algunos datos. El siguiente es un ejemplo que demuestra cómo crear una tabla e insertar datos usando declaraciones SQL:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class HSQLDBExample {
    
    
    public static void main(String[] args) {
    
    
        Connection connection = null;
        try {
    
    
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
            connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
            
            // 创建表
            String createTableSQL = "CREATE TABLE employees (id INT, name VARCHAR(255))";
            PreparedStatement createTableStatement = connection.prepareStatement(createTableSQL);
            createTableStatement.executeUpdate();
            
            // 插入数据
            String insertDataSQL = "INSERT INTO employees (id, name) VALUES (?, ?)";
            PreparedStatement insertDataStatement = connection.prepareStatement(insertDataSQL);
            
            insertDataStatement.setInt(1, 1);
            insertDataStatement.setString(2, "John Doe");
            insertDataStatement.executeUpdate();
            
            insertDataStatement.setInt(1, 2);
            insertDataStatement.setString(2, "Jane Smith");
            insertDataStatement.executeUpdate();
            
            // 执行其他数据库操作
            // ...
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (connection != null) {
    
    
                try {
    
    
                    connection.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }
}

En este ejemplo, primero creamos una tabla llamada "empleados" que contiene dos columnas: identificación y nombre. Luego, insertamos dos filas de datos usando declaraciones preparadas.

3. Consultar datos

HSQLDB admite declaraciones de consulta SQL estándar y puede utilizar estas declaraciones de consulta para recuperar datos. A continuación se muestra un ejemplo de cómo consultar datos previamente insertados:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class HSQLDBExample {
    
    
   

 public static void main(String[] args) {
    
    
        Connection connection = null;
        try {
    
    
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
            connection = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", "");
            
            // 执行查询
            String querySQL = "SELECT id, name FROM employees";
            PreparedStatement queryStatement = connection.prepareStatement(querySQL);
            ResultSet resultSet = queryStatement.executeQuery();
            
            // 处理查询结果
            while (resultSet.next()) {
    
    
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }
            
            // 执行其他数据库操作
            // ...
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (connection != null) {
    
    
                try {
    
    
                    connection.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }
}

En este ejemplo, ejecutamos una consulta SELECT simple e iteramos a través del conjunto de resultados para obtener los datos para la consulta.

Aplicación de muestra: Administrador de tareas basado en HSQLDB

Creemos una aplicación de muestra para implementar un administrador de tareas simple usando HSQLDB. Esta aplicación permitirá a los usuarios agregar, editar y eliminar tareas, así como ver una lista de tareas.

Diseño de base de datos

Primero, necesitamos definir el modelo de datos de la tarea. Crearemos una tabla llamada "tareas" con las siguientes columnas:

  • id: Identificador único de la tarea (entero)
  • title:El título de la tarea (cadena)
  • description: Descripción de la tarea (cadena)
  • due_date: Fecha de vencimiento de la tarea (fecha)

Características de la aplicación

  1. Agregar una tarea: los usuarios pueden ingresar un título, descripción y fecha de vencimiento para la tarea y agregar la tarea a la base de datos.
  2. Editar tareas: los usuarios pueden seleccionar una tarea y editar su título, descripción o fecha de vencimiento.
  3. Eliminar tarea: el usuario puede seleccionar una tarea y eliminarla de la base de datos.
  4. Ver lista de tareas: los usuarios pueden ver todas las tareas y ordenarlas por fecha de vencimiento.

Ejemplo de implementación

A continuación se muestra un ejemplo de Java simplificado que demuestra cómo implementar la funcionalidad anterior:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class TaskManager {
    
    
    public static void main(String[] args) {
    
    
        Connection connection = null;
        try {
    
    
            Class.forName("org.hsqldb.jdbc.JDBCDriver");
            connection = DriverManager.getConnection("jdbc:hsqldb:mem:taskdb", "SA", "");
            
            // 创建任务表
            String createTableSQL = "CREATE TABLE tasks (id INT IDENTITY, title VARCHAR(255), description VARCHAR(255), due_date DATE)";
            PreparedStatement createTableStatement = connection.prepareStatement(createTableSQL);
            createTableStatement.executeUpdate();
            
            Scanner scanner = new Scanner(System.in);
            
            while (true) {
    
    
                System.out.println("任务管理器");
                System.out.println("1. 添加任务");
                System.out.println("2. 编辑任务");
                System.out.println("3. 删除任务");
                System.out.println("4. 查看任务列表");
                System.out.println("5. 退出");
                System.out.print("请选择操作(1/2/3/4/5):");
                
                int choice = scanner.nextInt();
                
                switch (choice) {
    
    
                    case 1:
                        addTask(connection, scanner);
                        break;
                    case 2:
                        editTask(connection, scanner);
                        break;
                    case 3:
                        deleteTask(connection, scanner);
                        break;
                    case 4:
                        viewTaskList(connection);
                        break;
                    case 5:
                        System.out.println("谢谢使用,再见!");
                        return;
                    default:
                        System.out.println("无效的选项,请重新选择。");
                }
            }
        } catch (ClassNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if (connection != null) {
    
    
                try {
    
    
                    connection.close();
                } catch (SQLException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }

    private static void addTask(Connection connection, Scanner scanner) throws SQLException {
    
    
        System.out.print("请输入任务标题:");
        String title = scanner.next();
        System.out.print("请输入任务描述:");
        String description = scanner.next();
        System.out.print("请输入截止日期(YYYY-MM-DD):");
        String dueDate = scanner.next();
        
        String insertSQL = "INSERT INTO tasks (title, description, due_date) VALUES (?, ?, ?)";
        PreparedStatement insertStatement = connection.prepareStatement(insertSQL);
        insertStatement.setString(1, title);
        insertStatement.setString(2, description);
        insertStatement.setString(3, dueDate);
        insertStatement.executeUpdate();
        
        System.out.println("任务已添加!");
    }

    private static void editTask(Connection connection, Scanner scanner) throws SQLException {
    
    
        viewTaskList(connection);
        System.out.print("请选择要编辑的任务(输入任务ID):");
        int taskId = scanner.nextInt();
        
        System.out.print("请输入新的任务标题:");
        String title = scanner.next();
        System.out.print("请输入新的任务描述:");
        String description = scanner.next();
        System.out.print("请输入新的截止日期(YYYY-MM-DD):");
        String dueDate = scanner.next();
        
        String updateSQL = "UPDATE tasks SET title = ?, description = ?, due_date = ? WHERE id = ?";
        PreparedStatement updateStatement = connection.prepareStatement(updateSQL);
        updateStatement.setString(1, title);
        updateStatement.setString(2, description);
        updateStatement.setString(3, dueDate);
        updateStatement.setInt(4, taskId);
        updateStatement.executeUpdate();
        
        System.out.println("任务已编辑!");
    }

    private static void deleteTask(Connection connection, Scanner scanner) throws SQLException {
    
    
        viewTaskList(connection);
        System.out.print("请选择要删除的任务(输入任务ID):");
        int taskId = scanner.nextInt();
        
        String deleteSQL = "DELETE FROM tasks WHERE id = ?";
        PreparedStatement deleteStatement = connection.prepareStatement(deleteSQL);
        deleteStatement.setInt(1, taskId);
        deleteStatement.executeUpdate();
        
        System.out.println("任务已删除!");
    }

    private static void viewTaskList(Connection connection) throws SQLException {
    
    
        System.out.println("任务列表:");
        String querySQL = "SELECT id, title, description, due_date FROM tasks ORDER BY due_date";
        PreparedStatement queryStatement = connection.prepareStatement(querySQL);
        ResultSet resultSet = queryStatement.executeQuery();
        
        while (resultSet.next()) {
    
    
            int id = resultSet.getInt("id");
            String title = resultSet.getString("title");
            String description = resultSet.getString("description");
            String dueDate = resultSet.getString("due_date");
            System.out.println("ID: " + id + ", 标题: " + title + ", 描述: "

 + description + ", 截止日期: " + dueDate);
        }
    }
}

Esta aplicación de muestra utiliza HSQLDB para almacenar información de tareas y proporciona una interfaz de línea de comandos que permite a los usuarios realizar diversas operaciones de administración de tareas. Puede ampliar y mejorar esta aplicación según sea necesario.

en conclusión

HSQLDB es un sistema de gestión de bases de datos relacionales potente y versátil, que tiene las características de integración, peso ligero, alto rendimiento y compatibilidad, y es muy adecuado para diversos escenarios de aplicaciones. A través de la introducción y los ejemplos de este artículo, ha comprendido las características básicas, el uso y cómo crear una aplicación sencilla de HSQLDB. Ya sea en sistemas integrados o aplicaciones grandes, HSQLDB puede proporcionar una solución viable a sus necesidades de almacenamiento de datos.

Supongo que te gusta

Origin blog.csdn.net/i042416/article/details/132778693
Recomendado
Clasificación