1. De files a Objectes
Finalment, per tancar la unitat, treballarem de manera natural: recuperarem dades de la base de dades, crearem objectes a partir del ResultSet i guardarem les dades a la base de dades.
Estudiarem una nova manera de crear els nostres POJO (i BEAN), utilitzant una llibreria moderna anomenada Lombok.
1.1. POJO, BEAN i Projecte Lombok
Hem de crear classes segons el nostre model orientat a objectes. Depenent de com haguem fet les classes, poden ser POJO o BEAN o un altre tipus de classes. Anem a entendre-ho (extret d'aquí: enllaç).
1.1.1. POJO
Això significa Plain Old Java Object. És una classe que:
- No ha d'estendre cap classe.
- No ha d'implementar cap interfície.
- No ha de contenir anotacions específiques.
No hi ha restriccions en els modificadors d'accés dels camps. Poden ser privats, per defecte, protegits o públics. Tampoc és necessari incloure cap constructor en aquest.
Un exemple de POJO seria, per exemple:
Com podeu veure, un POJO és la mínima classe que podem fer.
1.1.2. BEAN
Els Beans són un tipus especial de POJO. Hi ha algunes restriccions perquè un POJO sigui un Bean.
- Tots els JavaBeans són POJOs, però no tots els POJOs són JavaBeans.
Serializable, han d'implementar la interfície Serializable. No obstant això, alguns POJOs que no implementen la interfície Serializable es diuen POJOs perquè Serializable és una interfície marcadora i, per tant, no suposa una càrrega excessiva.- Els camps han de ser privats. Això proporciona un control complet sobre els camps.
- Els camps han de tenir getters o setters o tots dos.
- Ha d'haver-hi un constructor sense arguments en un Bean.
- Els camps només s'accedeixen mitjançant el constructor o els getters i setters.
Per resumir, les classes POJO i Beans s'utilitzen per definir objectes Java per augmentar la seva llegibilitat i reutilització. Els POJOs no tenen altres restriccions mentre que els beans són POJOs especials amb algunes restriccions.
1.1.3. Lombok
Independentment de si utilitzem POJO o BEAN, hi ha algunes tasques repetitives que hem de fer per crear les nostres classes. La majoria d'aquestes tasques són implementades pels IDE, com ara crear getters, setters, encapsular camps, crear constructors, etc. Project Lombok és una llibreria que evita fer aquestes tasques repetitives, i diem el que volem i la llibreria i el compilador fan la resta.
En aquest enllaç configuració de Lombok trobaràs com configurar la llibreria en cada gestor de projectes (gradle, maven, etc.) i en cada IDE (Netbeans, Eclipse, IntelliJ, etc.).
Un cop instal·lada, només cal dir mitjançant anotacions el que vols:
@Getter\(\rightarrow\) generarà tots els getters.@Setter\(\rightarrow\) generarà tots els setters.@Data\(\rightarrow\) tots els mètodes que necessiten un POJO, incloentToString.@AllArgsConstructoro@NoArgsConstructor\(\rightarrow\) generarà el constructor que vulguis.
Al següent vídeo s'explica com afegir la dependència de Gradle i utilitzar Lombok.
1.2. Carregant objectes
Anem a finalitzar amb un exemple:
1.2.1. Classe Persona
Aquesta classe és el POJO d'una persona. Crearà getters, setters, toString i els mètodes principals amb només unes poques línies i algunes anotacions.
| Java | |
|---|---|
Cal tenir en compte que amb Lombok la feina es fa fàcil.
1.2.2. Omplint un Array
Per omplir una estructura de dades des de la base de dades, primer cal obtenir les dades. Cal crear l'objecte Statement o PreparedStatement i executar la consulta.
La tasca principal és transformar el ResultSet en una llista, però és una tasca senzilla:
- Recorre el ResultSet (amb next), i per a cada fila:
- Crea un objecte amb els valors emmagatzemats a les columnes
- Afegeix aquest objecte a la llista
Ara podràs canviar la informació en els objectes i, finalment, si s'ha fet alguna modificació, hauràs de guardar-la a la base de dades. Les preguntes són:
- Com puc saber si s'ha actualitzat un objecte?
- Com puc saber quin camp s'ha de desar?
Com pots veure, hi ha diverses tasques que requereixen un control de la modificació de les dades i com desar-les. Aquesta tasca serà fàcil amb ORM i l'estudiarem.
| Versió | Autor | Data |
|---|---|---|
| 0 | Joan Gerard Camarena | Juliol de 2021 |
| 1 | Joan Gerard Camarena | Octubre de 2022 |
| 2 | Joan Gerard Camarena | Setembre de 2024 |
| 3 | Joan Gerard Camarena | Octubre de 2025 |