2010-01-05 5 views
0

데이터베이스 테이블에 저장된 상수 값 목록이 있습니다. 내 응용 프로그램의 검색 양식은 사이트의 JSP 페이지에 배치 할 수있는 공통 포함 파일에 의해 생성됩니다. 이 검색 양식에는 데이터베이스 테이블의 상수가 포함되어야합니다. Spring 빈은 데이터베이스 계층을 관리하며 상수를로드 할 적절한 위치를 찾는 데 어려움을 겪고있다. 나는 다음을 시도했다 :db에서 상수를로드하고 포함 파일에서 해당 값을 읽는 중

  1. 상수를로드하기 위해 정적 방법을 사용한다. 이 기법의 문제점은 정적 메소드가 데이터베이스 액세스에 사용되는 Spring 빈에 액세스 할 수 없다는 점이다.
  2. 기본 동작 클래스에 상수를로드하는 중입니다. 이렇게하면 각 페이지로드시 상수에 대해 데이터베이스가 쿼리됩니다. 각 사용자의 세션에 결과를 저장하여 성능 저하를 약간 줄일 수는 있지만 이상적이지는 않습니다.
  3. 상수를 사용하여 전역 스프링 빈을 생성합니다. 필자는 include 파일에서이 전역 클래스에 어떻게 접근 할 수 있을지 모르겠다.

또 다른 옵션이 있습니까? include 파일에서 정수를 깨끗하게 검색 할 수 있기를 원합니다.

답변

0

캐시가 필요합니다. 그래서 # 2에서 정적 필드를 사용하면됩니다. 이 필드가 null이면 데이터를 가져 와서 필드에 저장합니다. 문제 : DB가 변경되면 필드를 지우거나 앱을 다시 시작하지 않으면 필드가 업데이트되지 않습니다.

# 3의 경우 전역 클래스에 액세스 할 수 없지만 다른 bean처럼 이름으로 bean에 액세스 할 수 있습니다. 그리고 다시, 당신은 staleness의 문제가있을 겁니다.

이 문제를 해결하려면 타임 스탬프 (long)가 포함 된 두 번째 필드를 추가하십시오. 입력란을 변경하면 System.currentTimeMillis()에 하루를 더한 값을 설정하십시오. include 파일을 살펴볼 때, 현재 시간에 대한 시간 소인을 점검하십시오. 그것이 오래되면 값을 다시 가져옵니다.

관련 문제