Class AziendaService
Questa classe orchestra le interazioni tra i controller REST/MVC e il layer di persistenza (AziendaRepository).
Gestisce i confini transazionali, l'aggregazione dei dati e l'applicazione di regole di validazione business-specific
(es. unicità P.IVA, formati contatti).
Le operazioni di modifica (scrittura/aggiornamento/cancellazione) sono annotate con Transactional per garantire
l'atomicità e la coerenza (ACID properties), delegando al container Spring la gestione del rollback in caso di eccezioni runtime.
- Since:
- 1.0.0
- Version:
- 1.6.0
- Author:
- Modulink Team
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionAziendaService(AziendaRepository aziendaRepository) Costruttore per Dependency Injection (Constructor Injection). -
Method Summary
Modifier and TypeMethodDescriptionvoiddeleteAzienda(int id) Rimuove fisicamente (HARD DELETE) un'azienda dal sistema.booleanfindByTelefono(String telefono) Verifica l'esistenza di un vincolo di unicità sul numero di telefono.Recupera l'elenco completo di tutte le aziende registrate nel sistema.getAziendaById(int id) Lookup di un'azienda tramite la sua chiave primaria (ID).getAziendaByPIVA(String piva) Recupera un'entità azienda in base alla Partita IVA.registraAzienda(AziendaEntity azienda) Persiste una nuova anagrafica aziendale nel sistema.updateAzienda(AziendaEntity azienda) Esegue l'aggiornamento (UPDATE) dei dati aziendali.
-
Field Details
-
aziendaRepository
-
-
Constructor Details
-
AziendaService
Costruttore per Dependency Injection (Constructor Injection).Spring IoC Container inietta automaticamente l'istanza singleton di
AziendaRepository. Questo approccio favorisce l'immutabilità e facilita il testing unitario tramite mock.- Parameters:
aziendaRepository- L'interfaccia DAO per l'accesso ai dati.- Since:
- 1.0.0
-
-
Method Details
-
getAziendaByPIVA
Recupera un'entità azienda in base alla Partita IVA.Esegue una lookup ottimizzata tramite indice univoco. Il metodo effettua l'unwrapping dell'
Optionalrestituito dal repository.- Parameters:
piva- La stringa contenente la P.IVA target.- Returns:
- L'istanza di
AziendaEntityse presente, altrimentinull. - Since:
- 1.0.0
- See Also:
-
registraAzienda
Persiste una nuova anagrafica aziendale nel sistema.L'operazione è transazionale: in caso di violazione di vincoli (es. duplicate key exception su P.IVA) l'intera transazione viene annullata. L'ID viene generato automaticamente dal database (IDENTITY strategy) al momento del flush.
- Parameters:
azienda- L'oggetto DTO/Entity popolato con i dati di registrazione.- Returns:
- L'entità persistita (attached state) aggiornata con l'ID generato.
- Since:
- 1.0.0
-
findByTelefono
Verifica l'esistenza di un vincolo di unicità sul numero di telefono.Utilizzato tipicamente dai validator dei form di registrazione per fornire feedback immediato all'utente (fail-fast).
- Parameters:
telefono- Il recapito telefonico da controllare.- Returns:
truese il telefono è già presente in DB,falsealtrimenti.- Since:
- 1.2.5
-
getAllAziende
Recupera l'elenco completo di tutte le aziende registrate nel sistema.Attenzione: Questo metodo può generare carichi elevati su database popolati. Considerare l'uso di paginazione per dataset estesi.
- Returns:
- Una
Listcontenente tutte le entità azienda. - Since:
- 1.1.0
-
getAziendaById
Lookup di un'azienda tramite la sua chiave primaria (ID).- Parameters:
id- L'identificativo intero dell'azienda.- Returns:
- Un
Optionalpopolato se l'ID è valido, vuoto altrimenti. - Since:
- 1.0.0
-
updateAzienda
Esegue l'aggiornamento (UPDATE) dei dati aziendali.Il metodo utilizza
CrudRepository.save(Object)che, in contesto JPA, esegue unmergese l'entità possiede un ID esistente. Richiede un contesto transazionale attivo.- Parameters:
azienda- L'entità con i dati modificati.- Returns:
- L'entità aggiornata e sincronizzata col DB.
- Since:
- 1.4.0
-
deleteAzienda
@Transactional public void deleteAzienda(int id) Rimuove fisicamente (HARD DELETE) un'azienda dal sistema.Questa operazione è irreversibile e potrebbe scatenare cancellazioni a cascata se configurate a livello di database (FK constraints con ON DELETE CASCADE).
- Parameters:
id- L'ID dell'azienda da eliminare.- Throws:
org.springframework.dao.EmptyResultDataAccessException- se l'entità non esiste.- Since:
- 1.5.0
-