¿Cuáles son las ventajas y desventajas de usar índices para columnas individuales en una base de datos?
Java
¿Qué tipos de índices existen en los sistemas de gestión de bases de datos SQL?
¿Qué puede llevar a una disminución en el rendimiento de la función?
¿Qué pasos tomarás para determinar las causas de los reinicios regulares del servicio relacionados con el error OutOfMemoryError?
¿Puedes explicar la concepto de la API Stream en Java y cómo se utiliza para procesar datos?
¿Tiene experiencia en interactuar con proveedores de datos o recursos?
¿Pueden las dependencias cíclicas provocar fugas de memoria en un programa?
¿Cómo saber la consulta SQL ejecutada en PostgreSQL?
Mecanismo de funcionamiento del operador SELECT FOR UPDATE en bases de datos y su papel en la gestión del acceso concurrente
Lea el código y destaque los errores /** * Un cliente con un billete comprado puede, por un costo adicional, elegir un asiento específico. * El precio base de los asientos se determina mediante tarifas (servicio externo). * Para clientes con tarifas específicas (PREMIUM, ULTRA), se debe aplicar un descuento en el pago. * Al reservar, se emite una factura para el pago. La gestión del pago se realiza en un servicio externo. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Reserva. * @param seatCode código del asiento (por ejemplo, 19A) * @param ticketId ID del billete */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //reservamos var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //buscamos la tarifa base para el asiento en el avión var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //buscamos datos del cliente Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Usuario encontrado " + userData.getFio() + " número de documento " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //descuento del 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //descuento del 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //emitimos la factura paymentClient.sendInvoice(invoice); System.out.println("Factura emitida"); } @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; }
¿Por qué se produce una excepción ConcurrentModificationException al modificar simultáneamente un ArrayList durante la iteración?
¿Qué métodos se pueden usar para aumentar la velocidad de búsqueda en una tabla?
¿Puedes explicar qué se entiende por tipo de dato atómico?
¿Puede explicar cómo está estructurada la herencia de excepciones en el lenguaje de programación?
¿Puedes enumerar los principales métodos proporcionados por la API Stream en Java?
¿De qué maneras puedes aumentar la velocidad de ejecución de este método?
¿Qué acciones tomarías si, al aumentar la carga en el sistema, las demoras en la ejecución de las consultas a la base de datos se vuelven significativas?
¿Qué distingue un enfoque optimista de los bloqueos de uno pesimista en el contexto de la gestión de la concurrencia en bases de datos?
¿Puede explicar el principio de funcionamiento del bloqueo pesimista y en qué se diferencia de otra estrategia de bloqueo?
Explique el concepto de eliminación de tipos y cuál es su propósito principal en la programación.