World.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package models;
  2. import java.util.List;
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.Id;
  6. import org.hibernate.Session;
  7. import play.db.jpa.JPAApi;
  8. @Entity
  9. public class World {
  10. @Id
  11. public Long id;
  12. @Column(name = "randomNumber")
  13. public Long randomNumber;
  14. public static World findById(final Long id, final JPAApi jpa) {
  15. return jpa.withTransaction("default", true, em -> { return em.find(World.class, id); });
  16. }
  17. public static List<World> save(final List<World> worlds, final JPAApi jpa) {
  18. final int batchSize = 25;
  19. final int batches = ((worlds.size() / batchSize) + 1);
  20. for ( int i = 0 ; i < batches ; ++i ) {
  21. final int index = i;
  22. jpa.withTransaction("default", false, em -> {
  23. em.unwrap(Session.class).setJdbcBatchSize(25);
  24. for(int j = index * batchSize ; j < Math.min((index + 1) * batchSize, worlds.size()); ++j) {
  25. em.merge(worlds.get(j));
  26. }
  27. return null;
  28. });
  29. }
  30. return worlds;
  31. }
  32. }