Tag Blog

framework

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 o 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.

Flutter: il nuovo framework by Google

Flutter: il nuovo framework by Google

Durante il Mobile World Congress 2018 Google ha annunciato la prima versione beta di Flutter. Flutter è il nuovo framework di Google che aiuta gli sviluppatori a realizzare applicazioni native sia per iOS che per Android. Flutter pone come obbiettivo principale lo sviluppo mobile veloce e performante grazie anche ad alcune funzionalità come un set completo di widget preimpostati per la realizzazione rapida di design nativo. Ovviamente Google ha anche dichiarato il pieno supporto per Android Studio e non solo. Flutter è infatti supportato anche da Visual Studio Code attraverso un plugin. Inoltre il team Google ha dichiarato la presenza di diverse App già realizzate e pubblicate con Flutter, tra cui anche quella di AdWords. Per chi ha un device Android è vuole provare a vedere di cosa si tratta vi rimandiamo all’App Flutter Gallery realizzata da Google come esempio. Infine passando al lato tecnico Google è fiera di annunciare la massima compatibilità di Flutter con oltre 1000 pacchetti, utili ad interfacciare la nostra applicazioni, come: SQLite, Firebase, Facebook ecc. Nell’attesa di sviluppi futuri vi rimandiamo al sito ufficiale flutter.io per chi volesse provare Flutter [embed]https://youtu.be/fq4N0hgOWzU[/embed]

Visualizzo 1-2 di 2 elementi.