Как загрузить 100К данных в таблицу с пружинной загрузкой (на стороне сервера) и Angular (передний конец) - PullRequest
0 голосов
/ 11 апреля 2019

У меня проблема с загрузкой данных из серверной части в конечную, без задержки на стороне клиента. Я использую пружинную загрузку для задней части и угловую 7 для передней части. Проблема заключается в том, когда я отправляю запрос от внешней стороны загрузка всех данных с сервера требует 55 секунд для загрузки данных. это слишком много ожидания .. я хочу знать, есть ли идея сделать этот процесс быстрее ..

Я уже выполнил все кодирование для загрузки данных из бэкэнда в интерфейс .. нет никаких ошибок или проблем при загрузке данных из бэкэнда в интерфейс .. но проблема в том, что время загрузки слишком велико, я хочу ускорить этот процесс

это файл application.properties

spring.datasource.url = jdbc:mysql://localhost:3306/siri?createDatabaseIfNotExist=true
spring.datasource.username = root
spring.datasource.password =sanu
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL57Dialect
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB

это моя сущность

@Entity
@Table(name = "Parts")
public class Parts implements SuperEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "map")
    @TableGenerator(name = "map", table = "Id_Gen", pkColumnName = 
   "Tables_Names", valueColumnName = "Gen_keys", pkColumnValue = 
   "PartsDTO", initialValue = 1, allocationSize = 1)
    private int id;
    private String partName;
    private String partNumber;
    private String barCode;
    private String brand;
    private String partType;
    private String country;
    private String vehicleModel;
    private String packSize;
    private String location;
    private String rackNo;
    private String roq;
    private String rql;
    @Column(name = "imageUrl1")
    private String imageUrl1;
    @Column(name = "imageUrl2")
    private String imageUrl2;
    @Column(name = "imageUrl3")
    private String imageUrl3;
    @Column(name = "imageUrl4")
    private String imageUrl4;
    private Blob image;
    private Blob image1;
    private Blob image2;
    private Blob image3;
    private String warranty;
    private Date adedDate;
    @Enumerated(value = EnumType.STRING)
    private Catogary catogary;
    @ManyToMany(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    @JoinTable(name = "Parts_FuelType",
            joinColumns = {@JoinColumn(name = "part_ID", 
    referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "fuel_Type", 
    referencedColumnName = "id")})
    private List<FuelType> fuelTypes = new ArrayList<>();
    @OneToMany(mappedBy = "parts", cascade = CascadeType.DETACH, fetch = 
    FetchType.LAZY)
    private List<OrderDetails> orderDetail = new ArrayList<>();
    @OneToMany(mappedBy = "parts", cascade = CascadeType.DETACH, fetch = 
    FetchType.LAZY)
    @OrderBy("date DESC")
    private List<Bulk> bulks = new ArrayList<>();
}

это Crud Repo

public interface PartsRepo extends CrudRepository<Parts, Integer> {
    Parts findPartsByBarCode(String barCode) throws Exception;
    List<Parts> findPartsByPartNameContaining(String partName) throws Exception;
    List<Parts> findPartsByPartNumberContaining(String partNumber) throws Exception;
    Long countByBarCodeAndFuelTypes(String barCode, FuelType t) throws Exception;
    Parts findPartsByPartNumber(String partNumber) throws Exception;
}

это контроллер

@GetMapping(value = "/getAll")
public List<PartsDTO> getAllParts() {
    try {
        return partsService.getAllParts();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

из этого почти 1 минута для загрузки всех данных в HTML-таблицу внешнего интерфейса. Я хочу знать, какой самый быстрый способ быстрой загрузки всех данных (100 КБ) в HTML-таблицу

enter image description here

1 Ответ

1 голос
/ 11 апреля 2019

Вы действительно должны добавить пейджинг на стороне сервера, если вам нужно загрузить записи 100K.

Spring-Boot позволяет создавать пейджинг из коробки.

Ваш repository должен быть расширенPagingAndSortingRepository:

public interface PartsRepo extends PagingAndSortingRepository<Parts, Integer> {
    Page<Parts> getAllPartsPage(Pageable pageable, //whatever @Param you need here);
}

И ваш controller должен принять Pageable параметр:

@GetMapping(value = "/getAll")
public Page<PartsDTO> getAllPartsPageable(@SortDefault("id (or whatever field you need)") Pageable pageable) {
    try {
        return partsService.getAllPartsPage();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

Оформить заказ Pageable интерфейс описание .

Также, вот хорошая статья о нумерации пружинных сапог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...