2012-01-04 3 views
2

데이터를 데이터베이스에 저장하고 검색하기 위해 Hibernate를 사용하는 Java 웹 응용 프로그램이 있습니다.Java 웹 응용 프로그램 메모리 처리

현재 제가 사용하고있는 전략은 데이터베이스의 모든 것을 시작시 응용 프로그램에로드하고 사용자가 응용 프로그램과 상호 작용할 때 데이터베이스에 저장/업데이트하는 것입니다.

내가 수행 한 작업은 각 사용자의 트랜잭션 내역을 비즈니스 논리의 일부로 추적하는 것입니다. (따라서이 거래 내역은 모두 애플리케이션 시작시로드됩니다.)

내가 볼 수있는 문제점은 모든 사용자의 모든 트랜잭션 기록을로드해서는 안된다는 것입니다. 트랜잭션 기록이 많이 있고 사용자가 반드시 볼 필요는 없기 때문일 수 있습니다. 메모리가 많이 소모되어 효율적이지 않습니다.

PHP 스크립트가 할 수있는 것과 비슷한 것이 있는지 궁금 해서요. 사용자가 트랜잭션 기록을 보도록 요청했을 때만 데이터베이스를 쿼리하므로 서버 리소스를 사용하지 않습니다. (Aside from query the database) 아니면 지금 당장 직면하고있는 것에 관해서 어떤 제안/논평이 있습니까?

감사합니다.

+1

주어진 정보가 필요할 때 Hibernate를 쿼리하지 않는 이유는 무엇입니까? –

+0

사실, 그렇습니다. 그것은 바보 같았습니다. 그러나 예를 들어, 나는 많은 양의 데이터를 가지고 있으며, 자주 필요하다. 그런 다음 그것을 메모리에 저장하는 것이 더 좋은가? 이 경우 어떻게해야할까요? – HeavenAgain

+0

Hibernate에게 캐싱을 관리하게한다. –

답변

0

주어진 정보가 필요할 때 최대 절전 모드를 쿼리하고 최대 절전 모드로 데이터베이스에 다시 넣을 수 있도록합니다. 이것은 Hibernate가 캐싱을 관리 할 수있게 해준다.

Hibernate를 사용할 때, Hibernate가 데이터를 완전히 관리하게해야한다는 것에주의하라. 원시 SQL을 사용하여 직접 데이터를 추가하거나 변경하지 마십시오.

최신 컨테이너를 사용하는 경우 Java EE 컨테이너의 표준이므로 JPA로 마이그레이션하는 것이 좋습니다. 확장해야 할 때 더 유연하게 사용할 수 있습니다. JPA는 Hibernate에 매우 가깝지만, 구현이 아닌 API이기 때문에 선택할 수있는 API가 두 개 이상 있습니다.

+0

아마도 나는 Hibernate를 올바르게 이해하지 못하고있다. 현재 개체/엔티티 속성을 업데이트 할 때마다이 순서로 세션을 열고 업데이트하고 커밋하고 닫습니다. 나는 이것이 데이터베이스가 현재 프로그램 상태와 동기화되지 못하게 할 것이라고 생각했다. 그러나 당신이 제안하는 것은 세션이 열린 채로 있도록하는 것입니다, 그래서 개체는 영구적이고 업데이트하고, 커밋하고, 사용자가 세션/로그 오프를 닫을 때 세션을 닫으시겠습니까? – HeavenAgain

+0

나는 Hibernate에 친숙하지 않다. 이 상황에서 Hibernate 문서가 당신에게 제안하는 것은 무엇인가? –

+0

사실 나는 이것을 보았을 때 두 가지 접근법이 있습니다. 하나는 현재 사용하고있는 것입니다. 하나의 작업 당 세션, 다른 하나는 요청 당 세션입니다. 더 나은 이해를 얻으려면 실제로 이것을 조사해야합니다. (비록 데이터베이스를 응용 프로그램과 동기화해야하기 때문에 작업 당 세션이 의미가 있습니다.그러나, 나는 Hibernate가 제공하는 지속성을 이용하지 않는다는 것을 알 수있다.) 한편, 당신의 답변과 당신의 도움에 감사드립니다! – HeavenAgain

0

왜 모든 요청에 ​​대해 최대 절전 모드로 들어 오지 않고 응답 후 출시됩니까? 이것은 일반적인 접근 방법입니다.

관련 문제