Introducció a les bases de dades
1. Per què necessitem bases de dades?
Fins ara, quan creàveu un programa Java, les dades que treballàveu vivien a la memòria RAM:
| Java | |
|---|---|
Una base de dades ens permet guardar les dades en disc de forma persistent: si tanquem el programa i el tornem a obrir, les dades segueixen allà.
2. Què és un Driver?
Per parlar amb una base de dades des de Java necessitem un driver (o connector).
Penseu-ho com un traductor: el vostre programa Java no sap com parlar amb MySQL o MongoDB directament, però el driver sí. El driver sap el protocol intern de cada base de dades i tradueix les vostres peticions Java al llenguatge que entén la BD.
| Text Only | |
|---|---|
Cada base de dades té el seu driver propi:
| Base de Dades | Driver | Dependència Maven |
|---|---|---|
| MySQL | MySQL Connector/J | mysql:mysql-connector-java |
| MongoDB | MongoDB Java Driver | org.mongodb:mongodb-driver-sync |
2.1. Afegir el driver al projecte (Maven)
Si useu Maven, afegiu al vostre pom.xml:
Si no useu Maven, heu de descarregar el fitxer .jar del driver i afegir-lo al classpath del projecte.
3. L'Algoritme General
Independentment de la base de dades que useu, l'algoritme de treball sempre segueix el mateix patró:
| Text Only | |
|---|---|
Alliberar recursos
És molt important tancar sempre els recursos que obrim (connexions, cursors, sentències...). Si no ho fem, el programa pot quedar-se sense connexions disponibles. Usarem el bloc try-with-resources de Java per assegurar-ho.
4. Les Operacions CRUD
CRUD és l'acrònim de les quatre operacions bàsiques sobre qualsevol base de dades:
| Lletra | Operació | SQL | MongoDB |
|---|---|---|---|
| C | Create (crear) | INSERT |
insertOne() / insertMany() |
| R | Read (llegir) | SELECT |
find() / findOne() |
| U | Update (actualitzar) | UPDATE |
updateOne() / updateMany() |
| D | Delete (esborrar) | DELETE |
deleteOne() / deleteMany() |
Totes les aplicacions que accedeixen a una base de dades fan combinacions d'aquestes quatre operacions. Un sistema de gestió d'una biblioteca, per exemple: - C: Afegir un nou llibre al catàleg - R: Buscar els llibres d'un autor - U: Marcar un llibre com a prestat - D: Eliminar un llibre donat de baixa
Equivalències
Aquestes 4 operacions CRUD coincideixen amb les operacions bàsiques del SQL: INSERT, SELECT, UPDATE i DELETE. En MongoDB, aquestes operacions es realitzen amb mètodes específics del driver.
5. Connexió: El Recurs Més Important
La connexió és el canal de comunicació entre el vostre programa i la base de dades. Obrir una connexió és una operació costosa (temps de xarxa, autenticació...), per tant:
- Cal reutilitzar les connexions sempre que sigui possible.
- Cal tancar-les quan ja no les necessitem.
- Cada connexió consumeix recursos tant al programa com al servidor de BD.
5.1. Try-with-resources
Java ofereix el bloc try-with-resources que tanca automàticament els recursos quan s'acaba el bloc, fins i tot si hi ha una excepció:
6. Gestió d'Excepcions
Les operacions amb bases de dades poden fallar per molts motius: - La BD no està en execució - Credencials incorrectes - La taula no existeix - Error de xarxa - Dada duplicada (clau primària repetida)
Cada driver té les seves excepcions:
- JDBC (MySQL): llança
SQLException - MongoDB Driver: llança
MongoException
Sempre cal gestionar aquestes excepcions per fer el programa robust:
| Java | |
|---|---|
7. Resum Visual
Als següents apartats veurem com aplicar tot això amb MySQL i MongoDB amb exemples concrets.
Sols una introducció
Aquesta secció és només una introducció prou completa als conceptes bàsics.
El proper curs, tens una assignatura específica anomenada "Accès a Dades" on aprofundirem molt més en aquests temes, amb pràctiques i projectes reals. Aquí només volem donar-te una visió general per començar a treballar amb bases de dades en Java.