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
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
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.