Giter Club home page Giter Club logo

birg81 / java.h2db.mvn Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 58 KB

Welcome to the GitHub repository of our Maven project! 🚀 Here, we harness the power of Maven to manage our project's dependencies, while utilizing H2 Database for efficient data storage. Explore our code to witness the seamless synergy of Maven and H2DB in action. Join us in the world of streamlined development and data management!

License: Apache License 2.0

Java 100.00%

java.h2db.mvn's Introduction

MIT License GPLv3 License AGPL License

java.h2db.mvn

Benvenuti in questo repository GitHub 🚀 che mostra un progetto Maven! che sfrutta l'efficacia di H2DB H2DB, un R-DBMS scritto in Java. H2 Database si presenta come un'alternativa ai R-DBMS tradizionali come MySQL-logo MySQL come sistema per lo storaging di Dati.

Cosa fa questo progetto

Questo progetto Maven si occupa in modo automatico del download delle dipendenze di H2, un database relazionale in scritto sul file PeopleDB.mv.db. Nel file principale dell'applicazione Main.java, viene instaurata una connessione con il database. Durante la prima esecuzione, dato che il database non esiste ancora, viene generato automaticamente utilizzando le credenziali predefinite, scelte dall'utente all'atto dell'instaurazione della connessione. Considerando l'assenza di dati nel database, la tabella Person viene create e popolata in conformità con le istruzioni specificate nel file PeopleDB.sql. Subito dopo, i risultati di una query vengono visualizzati a schermo.

Update del progetto

Nella sua fase embrionale, il progetto combinava le capacità di Maven alla potenza di H2; successivamente, allo scopo di condurre analisi comparative, è stata intrapresa una rivisitazione per preparare il terreno per un'agevole adozione di MySQL in luogo di H2. Per conferire un'ulteriore dimensione di fascino all'approccio, è stata abbandonata l'idea di installare strumenti onerosi come XAMPP o MySQL in ambiente locale ed è stato deciso di adottare un servizio online ospitato da db4free; la cui piattaforma permette, previa una registrazione, l'uso di un R-DBMS MySQL online. Tale piattaforma seppur con qualche limitazione non ha però compromesso la natura didattica del progetto. In un quadro riassuntivo:

  • Nel file pom.xml, è stata inserito lo starter per la dipendenza per MySQL oltre ad H2; uno due starter può essere estromesso e/o rimosso rimosso nel caso non se ne faccia utilizzo.
  • Il file PeopleDB.sql è stato sposato online.
  • Nel corpo codice sono stateffettuate rivisitazioni mediante accorgimenti chirurgici su porzioni specifiche del codice volti a discriminare il database in uso.

Caratteristiche fondamentali di H2DB

Una delle sue caratteristiche distintive è la dimensione ridotta, poiché archivia l'intero database in un unico file con estensione .mv.db, simile al funzionamento di SQLite. Questa caratteristica non solo garantisce robustezza, ma anche la resilienza dell'intero sistema in caso di corruzione di un singolo db.

H2DB, analogamente a SQLite, si distingue per la sua versatilità e velocità. Questa agilità lo rende ideale per prototipare progetti. Una caratteristica unica è la capacità di mantenere l'intero database in memoria, ottimizzando le prestazioni a scapito della persistenza. Al riavvio del progetto, i dati vengono, optando per questa modalità, irrimediabilmente persi. Per far uso di questa modalità (in-memory storaging) basta scrivere nel codice Java il seguente codice:

Connection con = DriverManager.getConnection("jdbc:h2:mem:<db_name>", username, password);

Se invece si vuole puntare alla persistenza dei dati e al ripristino dei dati al riavvio dell'applicazione basta optare per la modalità classica (Embedded storaging) optando per il seguente codice:

Connection con = DriverManager.getConnection("jdbc:h2:<path_to_db_name>", username, password);

Analogamente nel caso in cui si faccia uso con un R-DBMS MySQL il codice invece si trasforma in:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/<db_name>", username, password);

o analogamente nel caso in cui il DB sia ospitato online il codice relativo sarà:

Connection con = DriverManager.getConnection("jdbc:mysql://db4free.net:3306/<db_name>", username, password);

Il nome del database non comprende la sua estensione (quindi senza .mv.db). Per altre modalità di connessione consultare qui.

Essendo implementato in Java, H2DB è perfettamente integrato con il linguaggio, consentendo un approccio JDBC. Altri linguaggi possono sfruttare questo DBMS a patto di avere una JVM installata e il relativo connettore (sotto forma di file JAR).

Nonostante la sua semplicità, H2DB offre un'interfaccia web integrata e una shell testuale estremamente versatile.

H2 WUI

L'interfaccia web è flessibile ma non supporta la creazione del file di database stesso. A tale scopo, si ricorre all'interfaccia da riga di comando che offre la possibilità di impostare caratteristiche avanzate.

Per avviare l'interfaccia web, utilizzare il seguente comando:

java -jar h2.*.jar

La GUI web sarà accessibile all'indirizzo http://localhost:8082. È possibile, inoltre, personalizzare le porte utilizzate con le opzioni seguenti:

java -jar h2.*.jar -webPort 5000 [-tcpPort 5001] [-pgPort 5002]

che avvia l'interfaccia web sulla porta 5000 ed eventualmente quella TCP 5001 e pg 5002

h2_WUI

Come si può osservare l'interfaccia non è da meno alla classica interfaccia web phpMyAdmin di MySQL.

h2_WUI_2

H2 CLI

Se il database non esiste o vi è la necessità di impostare le credenziali di accesso al db, la CLI testuale è necessaria!

CLI

Per accedere ad essa si può adoperare il seguente comando:

java -cp h2.*.jar org.h2.tools.Shell

Questa interfaccia nel caso che il DB non esista, permetterà di crearlo e di settare in maniera avanzata tutte le credenziali; attraverso una serie di passaggi, sarà possibile scegliere a proprio piacimento username e password oltre che la posizione del db sul disco.

Questa interfaccia permetterà, inoltre, in caso di DB già esistente, di autenticarsi e successivamente operare in maniera professionale.

Caricare istanza del server nel codice java

A differenza di MySQL, non è richiesto avviare un server H2 in un'istanza separata. Nel codice Java, è sufficiente richiamare:

org.h2.Driver.load();	// Carica il Server H2DB
// esegui operazioni
org.h2.Driver.unload();	// Ferma il Server H2DB

file POM

Il file pom.xml o Project Object Model è un file costruito da Maven e serve per gestire le dipendenze del progetto.

All'interno del file si può facilmente notare il seguente snippet

<groupId>pkg</groupId>
<artifactId>java.h2db.mvn</artifactId>
<version>1.0.0-alpha</version>
<description>Maven and H2DB</description>

dove:

  • grupId rappresenta il package nel quale sono disposte le diverse classi
  • artifactId rappresenta il nome del progetto
  • description è una descrizione del progetto (opzionale.

Si può inoltre notare il seguente spezzone:

<dependencies>
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<version>2.2.220</version>
</dependency>
</dependencies>

Questo blocco è molto importante perché serve a gestire le diverse dipendenze del progetto Maven. In questo caso viene gestita la dipendenza di H2 Questo blocchi racchiusi nei tag <dependency> si chiamano anche starter e possono essere gestiti automaticamente dal gestore maven usato nel proprio IDE o manualmente, attingendo le informazioni dal sito MVNrepo https://mvnrepository.com/, nel nostro caso abbiamo attinto le info relative ad h2.

Le directory in un progetto Maven

Un progetto maven è così organizzato:

/<artifactId>
-/src
--/main
---/java
----/<groupId>
-----Main.java
---/resources
--/test
---/java
-/target
--/classes
--/test-classes
-pom.xml

di seguito:

  • /<artifactId/src/main/java/<groupId> contiene il l'entry point del progetto, quali ad esempio Main.java il quale può essere tranquillamente essere rinominato. Gli altri package possono essere eventualmente disposte ad esempio in questo modo /<artifactId/src/main/java/<groupId>.<package>
  • /resources è una cartella che contiene risorse varie ed eventuali, in questo progetto non c'è nessuna risorsa e può tranquillamente essere cancellata
  • /test è una cartella che contiene Unit Test e può tranquillamente essere cancellata
  • /target è la cartella dei file .class, è importante che ci sia almeno /target/classes altrimenti Maven ha qualche problema ad essere validato.

Di conseguenza i file e le cartelle essenziali del progetto sono le seguenti:

/<artifactId>
-/src
--/main
---/java
----/<groupId>
-----Main.java
-/target
--/classes
-pom.xml

🔗 Links

linkedin twitter

java.h2db.mvn's People

Contributors

birg81 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.