Java
Dimmi come ti sei immerso nei dettagli di questo progetto.
Quali dati di origine vengono utilizzati per determinare il valore di hashCode in un oggetto?
Qual è il ruolo del sistema di controllo delle versioni nel processo di sviluppo del software?
Come si può implementare la memorizzazione e la visualizzazione della struttura di un albero genealogico in un database relazionale?
Puoi spiegare la differenza tra polimorfismo e astrazione nella programmazione orientata agli oggetti?
Leggere il codice e evidenziare gli errori /** * Un cliente con un biglietto acquistato può, a pagamento, scegliere un posto specifico. * Il prezzo base dei posti è determinato dai tariffe (servizio esterno). * Per i clienti con tariffe specifiche (PREMIUM, ULTRA), è necessario applicare uno sconto al pagamento. * Durante la prenotazione, viene emessa una fattura per il pagamento. La gestione del pagamento avviene tramite un servizio esterno. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Prenotazione. * @param seatCode codice del posto (ad esempio 19A) * @param ticketId ID del biglietto */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //prenotiamo var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //cerchiamo la tariffa base per il posto sull'aereo var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //cerchiamo i dati del cliente Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Utente trovato " + userData.getFio() + " numero documento " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //sconto del 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //sconto del 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //emetti la fattura paymentClient.sendInvoice(invoice); System.out.println("Fattura emessa"); } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
Puoi parlare dei diversi tipi di propagazione che possono essere impostati nell'annotazione @Transactional?
Quali fonti utilizzi per cercare materiali didattici e aggiornamenti nel campo della tecnologia?
È possibile stabilire collegamenti tra diverse collezioni nel database MongoDB?
Come hai iniziato a imparare a lavorare con Java e i tuoi primi progetti in questo linguaggio?
Come vengono formate le query al database?
Su cosa si basa il framework Spring?
Qual è la differenza tra database SQL e NoSQL?
Dove viene usata l'annotazione @Bean?
Dove è meglio applicare l'ereditarietà e l'associazione nella programmazione?
Cos'è l'idempotenza di un metodo?
Quale approccio di autenticazione e autorizzazione è implementato in Spring Security nel tuo progetto?
Qual è la differenza tra i metodi di richiesta HTTP?
Cos'è l'interfaccia AutoCloseable e come funziona la costruzione try-with-resources in Java?
Perché i database sono migliori dei file di testo?