Post blog

Software

Magento 2 - usare Transaction per salvare oggetti

Magento 2 - usare Transaction per salvare oggetti

  Magento 2 è la nuova versione della piattaforma E-commerce che offre nuove e interessanti funzionalità. Tra queste Transaction per salvare oggetti. Una funzionalità poco conosciuta, che risulta però molto utile se si desidera garantire uno stato coerente nel database. Con una singola transazione è possibile combinare molti oggetti da salvare . In tal caso sono possibili due esiti:

  • Transazione riuscita garantisce che tutte le operazioni SQL all'interno della transazione siano eseguite senza problemi. Quindi i dati sono validi e vengono salvati in db.
  • Errore di transazione qualcosa è accaduto durante l'esecuzione della transazione. I sistemi di transazione forniscono una funzione chiamata rollback in cui i dati vengono ripristinati all’istante prima dell’inizio della transazione.
Magento 2 in alcuni casi  non sembra garantire un comportamento corretto nelle operazioni verso il db. Un esempio è il mal funzionamento con "rollback della transazione asimmetrica", ossia il salvataggio di default di tutte le informazione riguardati più tabelle. Tale malfunzionamento può essere risolto usando alternativamente:
  • TransactionFactory
  • Custom SQL statement transaction
TransactionFactory Il seguente codice mostra come utilizzare TransactionFactory in Magento 2: class MyClass { protected $saveTransaction; public function __construct \Magento\Framework\DB\TransactionFactory $transactionFactory ){ $this->saveTransaction = $transactionFactory->create(); } public function saveManyObjects() { ... $this->saveTransaction->addObject($order); $this->saveTransaction->addObject($customer); $this->saveTransaction->addObject($customObject); $this->saveTransaction->save(); } } Se si esegue il metodo saveManyObjects() di questa classe, tutti gli oggetti specificati vengono salvati contemporaneamente. Per una transazione è necessario iniettare la classe \ Magento \ Framework \ DB \ TransactionFactory, che offre tutte le funzionalità necessarie. È possibile aggiungere oggetti da salvare con il metodo addObject(). Si possono aggiungere oggetti quali: ordini, clienti, prodotti o persino oggetti personalizzati. Tramite il metodo save() viene eseguito automaticamente un commit o una rollback in base all’esito dell’operazione garantendo uno stato coerente dei dati. Custom SQL statement transactions Se si vuole usare istruzioni SQL custom utilizzando le transazioni è possibile riferirsi al seguente codice di esempio: $connection = $this->getConnection(); $connection->beginTransaction(); try { ... $connection->commit(); } catch (\Exception $e) { $connection->rollBack(); throw $e; } È possibile chiamare il metodo beginTransaction() per inizializzare una transazione sull'oggetto “connection” dell'utente. In seguito si possono creare le istruzioni di inserimento o aggiornamento. Con commit() vengono rese persistenti le operazioni sul database. Se qualcosa non è andato a buon fine, il costrutto try catch chiamerà una transaction rollBack per ripristinare uno stato coerente del database e genererà un errore. In conclusione Magento 2 offre tutto il necessario per utilizzare le transazioni. Una transazione è uno strumento utile per rendere sicure le modifiche al database, impedendo di corrompere un database se qualcosa non ha avuto esito positivo.

Pubblicato il 12 ott 2018

Potrebbero interessarti

ARC, LA PENNA VIBRANTE CHE AIUTA I MALATI DI PARKINSON A SCRIVERE

La micrografia è una delle tante conseguenze negative legate al morbo di Parkinson: chi è affetto dalla malattia tende infatti, con il passare del tempo, a scrivere lettere e parole in modo sempre più piccolo, fino a trasformare intere frasi in tratti talvolta incomprensibili. Una soluzione al problema potrebbe essere rappresentata dal progetto portato avanti da un team di studenti del Royal College of Art e dell’Imperial College di Londra.   Il dispositivo in questione si chiama ARC ed è una speciale penna equipaggiata con motori che, vibrando, stimolano in modo mirato alcuni muscoli, così da migliorare il controllo del movimento da parte del paziente.   Le sue dimensioni generose, inoltre, rendono più semplice l’impugnatura da parte di chi ha difficoltà a coordinare in modo preciso la posizione delle dita. Ciò che rende ancor più interessante il progetto è la sua origine: il gruppo di studenti ha iniziato a svilupparlo non con la finalità di consentire ai malati di Parkinson una scrittura più agevole, ma con l’obiettivo di far testare a chiunque che tipo di disagio comporta essere affetti dalla patologia.   L’approccio utilizzato per ARC potrebbe in futuro essere applicato anche ad altri oggetti di utilizzo quotidiano, come pennelli per il trucco o mouse per il computer. L’obiettivo di queste soluzioni è quello di semplificare la vita di coloro che soffrono di questa problematica, in attesa che la ricerca in merito alle sindromi neurodegenerative compia un significativo passo in avanti.

La continua evoluzione dei linguaggi di programmazione

La figura del programmatore software da diversi anni mantiene la sua posizione tra i lavori più pagati al mondo ma è difficile che si possa guadagnare da vivere con i linguaggi appresi all’università. È, invece, molto probabile che egli debba aggiornare le proprie competenze. Secondo l’ufficio di statistica del lavoro americano (Us Bureau of Labor Statistics) la richiesta di sviluppatori web è incrementata del 20% negli ultimi 10 anni, raddoppiando l’indice di crescita di ogni altra occupazione. Vediamo dunque quali sono i linguaggi più richiesti nel 2018: SQL: vince a mani basse, da anni. Se il web è un database, il linguaggio più richiesto in assoluto non può che essere quello per la realizzazione di database; JAVA: dopo i database, sul secondo gradino del podio si posiziona IoT, ossia un’evoluzione della rete che si integra con gli oggetti, dandogli la possibilità di comunicare tra loro attraverso un’intelligenza intrinseca; PHYTON: linguaggio di programmazione moderno e potente ma allo stesso tempo abbastanza facile da imparare. Prende il nome dalla passione per i Monty Python del suo creatore Guido van Rossum; JAVASCRIPT: a differenza di Java, è utilizzato soprattutto nello sviluppo della parte esteriore di siti e pagine web. La sua popolarità continua a crescere, grazie alla semplicità e alla versatilità che ne consente l’utilizzo anche per le app; C++: l’erede del C, il padre di tutti i linguaggi di programmazione, mantiene alta la reputazione di una concezione geniale, sublimazione tra semplicità e potenza. Il C++ è molto utilizzato soprattutto per costruire i motori grafici dei videogiochi ma anche per servizi web. Se lo si impara bene, Python o JavaScript saranno una passeggiata; C# e SWIFT: chiunque decida di programmare in Windows e iOS dovrà mettere in conto di imparare rispettivamente C# e Swift perché questi due ambienti necessitano di competenze particolari; PHP: da una recente stima, circa l’80% dei siti Internet utilizza PHP principalmente perché è stato uno dei primi linguaggi di programmazione a diffondersi in quello specifico ambito; GO: è uno degli ultimi linguaggi di programmazione presentato da Google con l’intento di realizzare un modo di programmare adatto a computer e dispositivi con scarse capacità di calcolo. Dunque l’informatica è un campo in continuo aggiornamento, l’hardware si evolve continuamente così come i linguaggi di programmazione. La figura del programmatore prevede un continuo apprendimento.  Quello che oggi il programmatore apprende potrebbe non servire più nei prossimi 10 anni, ma d'altronde il cambiamento è l’unica costante della nostra vita ed è anche un prezzo da pagare per il successo!

Il Sistema Operativo a 64-bit per RaspberryPi 3

RaspberryPi 3 Modello B è la prima versione con architettura a 64 bit del più popolare “mini-computer”, ma nonostante l’upgrade del processore, che è diventato un ARMv8 nella versione Pi 3, non esiste una distribuzione ufficiale di un sistema operativo a 64-bit. I motivi sono legati al fatto che l’azienda fondatrice del “lampone embedded” si è concentrata sul rendere il suo sistema operativo, Raspbian, che è una distribuzione Debian, compatibile per tutte le generazioni di Pi. Il sistema operativo SUSE, che è una distribuzione di Linux, supporta le più svariate architetture e con la sempre più forte presenza di processori ARM all’interno dei data center, l’azienda tedesca (che ha iniziato stampando manuali UNIX e offrendo assistenza tecnica circa 3 decenni addietro) si è concentrata sulla possibilità di operare su questi tipi di calcolatori in modo da poter aggiungere ulteriori piattaforme al calderone di quelle supportate. In occasione dell’evento SUSECon 2016, SUSE ha annunciato il supporto di SLES (SUSE Linux Enterprise Server) per RaspberryPi 3. In realtà esiste anche una release di openSUSE, la versione open di SUSE, che è in grado di girare sul dispositivo embedded. Pertanto i possessori di una boardPi 3 possono sfruttare le funzionalità del proprio dispositivo grazie all’unico sistema operativo a 64 bit compatibile ad oggi disponibile. I vantaggi vengono tradotti in termini di performance di computazione e anche circa la compatibilità di programmi le cui release a 32 bit sono di fatti in via di estinzione. Come spiega EbenUpton, fondatore di Raspberry, si tratta del primo rilascio ufficiale per l’architettura a 64-bit da parte di un importante fornitore e soprattutto SLES prevede il supporto per il protocollo wireless e bluetooth (BLE), che sono delle novità presenti proprio a partire dalla versione Pi 3. SLES è disponibile con una versione evalution con un limite di durata pari a 60 giorni, ma la patch per Raspberry, prevede un abbonamento gratuito di un anno con possibilità di scaricare gli aggiornamenti. In alternativa, si può tenere in considerazione il prodotto free di SUSE, openSUSE, la quale ha reso disponibile due immagini per Raspberry Pi3, ormai ben note alla community di SUSE, Leap e Tumbleweed. Di fatti SLES è l’unica distribuzione enterprise, che sicuramente porta notevoli vantaggi rispetto alle versioni open o community, quali ad esempio aggiornamenti tempestivi e sicuri, longevità, supporto per 10 anni, certificazioni di sicurezza. Sarà interessante capire se sarà mai rilasciato il sistema Raspbian a 64-bit oppure se SUSE possa diventare il prossimo sistama operativo ufficiale di Raspberry.