@Transactional ve službě

hlasů
0

Vytvořil jsem aplikaci pro hlasování a mám metodu, která mění počet hlasů. Implementuje rozhraní s @Transactional anotací.

@Transactional(readOnly = true)
public interface VotingService {

    Vote getByRestaurantId(int restaurantId);

    Vote get(int id);

    List<Vote> getWithRestaurantsByDate(LocalDateTime date);

    List<Vote> getWithRestaurantsToday(HttpServletResponse response, int id);

    @Transactional
    Vote voteFor(int restaurantId, int userId);
}

Používám SpringBoot. Bude to fungovat správně a zároveň hlasováním několik uživatelů. A jak si můžete vyzkoušet takovou akci?

Sekvenční hlasování pracuje správně.

Kód změny se počet hlasů, jako je tento:

    @Service
    public class VotingServiceImpl implements VotingService {
    ...

    @Override
    public Vote voteFor(int restaurantId, int userId) {
    ...
        Vote vote = getByRestaurantId(restaurantId);
        vote.setNumberOfVotes(vote.getNumberOfVotes() + 1)
    ...
        return vote;
    ...
    }
    ...

    }




@Entity
@Table(name = votes, uniqueConstraints = {@UniqueConstraint(columnNames = {restaurant_id, date, votes}, name = votes_unique_restaurant_date_votes_idx)})
public class Vote extends AbstractEntity {
    @Column(name = votes)
    private int numberOfVotes;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = restaurant_id, nullable = false)
    @NotNull
    private Restaurant restaurant;

    public int getNumberOfVotes() {
        return numberOfVotes;
    }

    public void setNumberOfVotes(int numberOfVotes) {
        this.numberOfVotes = numberOfVotes;
    }

    public Vote() {
    }

    public Restaurant getRestaurant() {
        return restaurant;
    }

    public void setRestaurant(Restaurant restaurant) {
        this.restaurant = restaurant;
    }

    @Override
    public String toString() {
        return Vote{ +
                super.toString() +
                numberOfVotes= + numberOfVotes +
                , restaurant= + restaurant +
                '}';
    }
}

Dík!

Položena 20/10/2018 v 12:55
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

  • VotingService je rozhraní.
  • Prováděcí třída VotingServiceImplje ojedinělým třídy ve výchozím nastavení na jaře. Je rozdělena mezi závity.
  • To by nemělo mít proměnnou instance pro držení hlasovací informací.

Si můžete ověřit správnost služby vykonáním paralelní požadavek pomocí pošťák nebo JMeter

Odpovězeno 20/10/2018 v 13:39
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more