Java - Banco de dados para distribuição

Bom dia,
Sou estudante de Ciência da Computação e estou iniciando os estudos em Java. Assim como diversos softwares funcionam “offline”, quando desenvolvo uma aplicação java, ela só funciona quando o mysql está “ligado via xamp”, como faço para ela não depender mais do xamp e quando um cliente instalar, ela funcione perfeitamente sem necessidade de ficar ativando xamp?
Isso se chama Embedded? see sim, quais são gratuitos?

Instala somente o MySQL no cliente ou instala em um servidor e se for rede local as estações funcionará acesso o banco do servidor, se for uma rede externa redireciona e libera a porta 3306 TCP UDP

2 curtidas

Existe ainda a possibilidade de você distribuir o banco de dados embutido na aplicação utilizando o BD Apache Derby, assim você não vai precisar instalar um SGBD no seu cliente.
Se quiser saber mais : https://pt.wikipedia.org/wiki/Apache_Derby

1 curtida

Em relação a Fire bird Embedded aplicado ao java, seria mais simples?

Mas assim o cliente terá que iniciar sempre na sua máquina o Mysql via xamp, certo?

Poderia me dar uma breve explicação de como funcionaria em um exemplo real?

Ex: um PDV para um cliente em um açougue onde somente ele utiliza(sem funcionários), como funcionaria?

Quando falam em banco de dados embed , eu penso em 3 alternativas Derby, H2 e HSQLDB.

Abaixo segue um exemplo de H2 (mas se vc mudar a jdbc url e o nome do drive “org.h2.Driver” vai funcionar):

import java.sql.*;

public class Mydb {

public static void main(String[] args) {
    System.out.println("ok");
    Statement stmt = null;
    try {
        Class.forName("org.h2.Driver" );
        Connection connection = DriverManager.getConnection("jdbc:h2:~/testdb", "sa", "");
        System.out.println(connection);
        connection.setAutoCommit(false);
        stmt = connection.createStatement();
        stmt.execute("CREATE TABLE PERSON(id int primary key, name varchar(255))");
        stmt.execute("INSERT INTO PERSON(id, name) VALUES(1, 'Anju')");
        ResultSet rs = stmt.executeQuery("select * from PERSON");
        System.out.println("H2 Database inserted through Statement");
        while (rs.next()) {
            System.out.println("Id "+rs.getInt("id")+" Name "+rs.getString("name"));
        }
        stmt.close();
        connection.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

eu uso maven :

  <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <version>1.4.197</version>
          <scope>compile</scope>
</dependency>

Como mencionei o Apache Derby é um SGBD que vai embarcado na sua aplicação! Ou seja só é necessario instalar a sua aplicação(PDV) e o banco de dados vai junto com ela, um banco de dados local. E em relação ao Mysql, você não precisa instalar o xamp ou o lamp, você pode instalar apenas o SGBD Mysql, assim como faço. O xamp é um tipo de “pacotão” que já vem com o servidor de aplicação Apache e o SGBD myql. Mas como eu já disse, nada o impede de baixar somente o Mysql.