Время отклика Spring Boot Restful Service слишком велико - PullRequest
0 голосов
/ 16 января 2019

В моем REST-сервисе Springboot я не могу получить TIMESTAMP (ДАТА + ВРЕМЯ) в качестве ответа, потому что:

если я настрою его как @Temporal (TemporalType.TIMESTAMP), он имеет более 400 сек. слишком большое время отклика

НО если я настрою его как @Temporal (TemporalType.DATE), он будет меньше 1 сек. Время отклика, что здорово, но мне тоже нужно время.

если кто-нибудь знает, где я теряю производительность, помогите:)

мой класс сущности

@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "DBTM")
@Temporal(TemporalType.TIMESTAMP)  //if this is DATE instead of TIMESTAMP 
                                    //the performance increases
private Date DBTM; 

public StationsMessung(... ,Date DBTM, ...) {
...
this.DBTM = DBTM
...}

public StationsMessung() {
}

public Date getDBTM() { return DBTM;}

public void setDBTM(Date DBTM) { this.DBTM = DBTM;}

мой сервис

@Service
public class StationService {

@PersistenceContext
EntityManager entityManager;

public List<Station> getAllStationMessungen(int AVNR, int TXNR, Date 
STARTZEIT, Date ENDZEIT) {
    return entityManager.createQuery("SELECT  b FROM StationsMessung b 
WHERE b.AVNR=:AVNR and b.TXNR=:TXNR and b.DBTM between :STARTZEIT and 
:ENDZEIT" )
            .setParameter("AVNR",AVNR )
            .setParameter("TXNR",TXNR )
            .setParameter("STARTZEIT", STARTZEIT)
            .setParameter("ENDZEIT", ENDZEIT)
            .getResultList();
}

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

@RequestMapping(value = 
"/allmessungen/{AVNR}/{TXNR}/{STARTZEIT}/{ENDZEIT}", method = 
RequestMethod.GET) 
public List<Station> getAllStationMessungen(@PathVariable int AVNR, 
@PathVariable int TXNR, @PathVariable String STARTZEIT,  @PathVariable 
String ENDZEIT) 
throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH:mm", 
    Locale.GERMAN);
    System.out.println("erste startzeit beim eingeben des strings");
    System.out.println(STARTZEIT);

    Date STARTZE=formatter.parse(STARTZEIT);
    Date ENDZE=formatter.parse(ENDZEIT);
    System.out.println("2.startzeit nachm formatieren");
    System.out.println(STARTZEIT);

return stationService.getAllStationMessungen( AVNR, TXNR, STARTZE, 
ENDZE);
} 

Если я использую

@Temporal(TemporalType.TIMESTAMP) 

в моем классе сущности

-> мне меньше 1 сек. время отклика

Если я использую
@Temporal (TemporalType.DATE) в моем классе сущности

-> я получаю время ответа 500 сек.

почему временная метка как ответ на данные требует гораздо больше времени?

...