2014-05-15 2 views
3

우리가 계획하고있는 것은 하나의 프로젝트를 원하지만 세 가지 다른 프레임 작업을 사용하여 수집하려는 것이므로 좋은 생각입니까 아니면 달성 할 수 있습니까?단일 프로젝트의 Spring Hibernate 및 JDBC 템플릿

우리는 이미 봄과 최대 절전 모드로 빌드를 구축했지만 jdbc 템플릿으로 확장하려고합니다.

과 같은 일반적인 질문을 따르십시오. 새 세션 공장이 필요하거나 없습니까? - jdbc 템플릿으로 최대 절전 모드 주석으로 pojos를 사용할 수 있습니까? 아니면 새 템플릿을 만들어야합니까? - 평균 500 명의 사용자가 한 번에 성능에 문제가 있습니까?

미리 감사드립니다.

답변

3

동일한 응용 프로그램에서 ORM과 JDBC를 모두 사용하는 것이 합당합니다. Hibernate는 네이티브 SQL 질의를 실행할 수 있으므로, 당신이 염두에두고있는 것에 의존하는 대안으로 고려할 수있다.

JDBC는 Hibernate에 필적하는 세션 팩토리 또는 엔티티 관리자 팩토리를 사용하지 않습니다. JDBC 결과에 대한 캐싱은 Hibernate와 별도로 처리되어야한다.

Hibernate/JPA 주석은 JDBC 쿼리와 관련이 없으며 쿼리에 전달 된 RowMapper는 pojos가 채워지는 방법을 제어합니다. Rowmapper에 의해 채워지는 Hibernate 엔티티를 재사용 할 수 있지만, 실제로 JDBC를 사용하는 이유는 평평한 객체로보다 집중된 결과를 얻고 DTO의 개별 세트로 끝나는 것이다.

여기서 실적을 해칠 것이라고 생각하는 것이 확실하지 않습니다. JDBC는 Hibernate보다 성능이 현저하게 향상되어야하지만 비즈니스 논리가 여러 곳에 퍼져 나가는 비용을 감수해야한다. 까다로운 부분은 아마 JDBC와 Hibernate가 동일한 트랜잭션을 사용하도록 트랜잭션 매니저를 설정하는 것이다. this question을 보라.

+0

안녕하세요, Nathan, 정말 이해할 수 있지만 매핑에 대해 최대 절전 모드의 POJO에 사용되는 것과 관련된 쿼리가 있습니까? hibernate와 jdbc 템플릿으로 하나의 객체를 가져 오면 나는 그 객체를 서로 설정할 수 있습니까? 여기서 hibernate 객체는 영속적이며 jdbctemplate은 그렇지 않습니다. 일부 CRUD 작업을 수행하는 동안 jdbctemplate 객체를 최대 절전 모드 객체로 설정하면 데이터가 변경됩니다. – commit

+0

@commit : 예, 실수로 그런 종류의 일을하는 데이터를 변경할 수 있습니다. 한 가지 방법은 dtos의 또 다른 레이어이거나, 다른 방법으로는 최대 절전 모드 엔티티에서 jdbc로 생성 된 모드로 복사하는 것입니다. 읽기 전용 트랜잭션을 설정하는 것도 도움이 될 것입니다. –