스프링 JDB성능 측면에서 CTemplate VS 최대 절전 모드
우리의 프로젝트에서 우리는 Spring JDB 중 하나를 결정해야 합니다.CT 템플릿 및 최대 절전 모드.
성능과 구현, 디자인 면에서 어느 것이 더 나은지 알고 싶습니다.그리고 어떻게?
JDBC 템플릿은 Hibernate의 오버헤드가 없기 때문에 두 구현 모두를 매우 빠르게 만들 수 있습니다.그러나 구현하는 데는 아마도 훨씬 더 많은 시간과 코드 라인이 필요할 것입니다.
Hibernate에는 학습 곡선이 있습니다. 그리고 여러분은 배후에서 무슨 일이 일어나는지, 언제 실체를 반환하는 대신 투영을 사용해야 하는지 등을 이해해야 합니다.하지만 마스터하면 JDBC 기반 솔루션보다 훨씬 많은 시간과 더 깨끗하고 간단한 코드를 얻을 수 있습니다.
95%의 경우 Hibernate는 충분히 빠르며, 최적화되지 않은 JDBC 코드보다 더 빠릅니다.나머지 5%의 경우, 예를 들어 Spring-JDBC와 같은 다른 것을 사용하는 것을 금지하는 것은 없습니다.두 솔루션 모두 상호 배타적이지 않습니다.
이는 프로젝트와 최대 절전 모드 모델이 사용자가 생각하는 방식에 얼마나 적합한지에 따라 달라집니다.속도/성능은 무관합니다.Hibernate가 어떻게 작동하는지에 대해 생각을 정리할 수 없다면, 여러분의 프로젝트는 찾고 고치는 데 많은 시간이 걸릴 이상한 버그들로 가득 찰 것입니다.
또한 Hibernate의 내부는 모델 및 DAO에 누출됩니다.일반적으로 주목할 만한 충돌 지점은 다음과 같습니다.equals()/hashCode()
트랜잭션 외부에서 수집을 느리게 로드할 수 있습니다.최대 절전 모드를 사용하는 예제는 매우 간단하고 짧은 시간에 많은 것을 달성할 수 있으므로 최대 절전 모드가 단순하다는 오해로 이어질 수 있습니다.그런거 아냐.최대 절전 모드는 많은 가정을 하고 특정한 방식으로 생각하고 코딩하도록 강요합니다.
용사를 합니다.JdbcTemplate
JDBC 자체의 아주 얇은 포장지이기 때문에 더 쉽습니다.여기서의 가격은 수천 줄의 정말 지루한 코드를 작성하게 될 것이라는 것입니다.또한 SQL 문자열을 유지하기가 매우 어렵다는 것을 알게 될 것입니다.데이터 모델이 변경되면 영향을 받을 수 있는 모든 위치를 전체 코드 기반에서 검색해야 합니다.예쁘지 않을 겁니다.
자체 프로젝트의 경우, 우리는 매우 복잡한 데이터 구조(수정된 트리 구조)를 가지고 있고 런타임에 복잡한 검색 쿼리를 구축해야 하기 때문에 Hibernate에 반대하기로 결정했습니다.대신 jOOQ를 사용하여 자체 DAO 계층을 작성했습니다. jOOQ는 JDBC 주변의 얇은 래퍼로 Java에서 멋진 DSL로 SQL을 작성할 수 있습니다.
create.selectFrom(BOOK)
.where(PUBLISHED_IN.equal(2011))
.orderBy(TITLE)
Hibernate와 마찬가지로 jOOQ에는 따라야 할 몇 가지 규칙이 있습니다. 그렇지 않으면 행복하지 않을 것이지만 이러한 규칙은 훨씬 더 관대합니다.
다른 옵션으로 스프링 데이터를 살펴봐야 합니다.간단히 말해, Spring Data를 사용하면 데이터베이스와 원격으로 유사한 모든 데이터에 데이터를 저장할 수 있습니다.즉, 최대 절전 모드에서는 모델을 관리하고 NoSQL 데이터베이스에서는 다른 모델을 관리할 수 있습니다.또는 필요에 따라 모델의 일부를 쉽게 마이그레이션할 수 있습니다.
주요 기능 중 하나는 DAO 구현이 다음과 같이 보인다는 것입니다.
public interface UserRepository extends Repository<User, Long> {
List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
이제는 구현이 어디에 있는지 궁금할 수도 있습니다. 이는 단순히 메서드 정의가 있는 인터페이스이기 때문입니다.런타임에 Spring Data는 이 메서드를 구현하는 코드를 생성합니다.이는 필요한 모든 쿼리의 99%가 "열 X가 있는 모든 행에 대한 쿼리 테이블..." 형식이므로 이 사용 사례를 최적화할 수 있습니다.
OTOH, 런타임에 정말 복잡한 검색 쿼리를 구축할 것이라는 것을 이미 알고 있다면 Spring Data는 아마도 큰 도움이 되지 않을 것입니다.
우리 프로젝트에서는 두 가지를 모두 사용하고 있습니다.JdbcTemplate
그리고.Hibernate
당신이 해야 할 일은 공유하는 것입니다.DataSource
hibernate
그리고.jdbcTemplate
작업에 따라 두 가지 모두 성능을 확인할 수 있으며, 어느 쪽이 더 나은지 더 나은지를 사용합니다.대부분 일반적인 작업에는 최대 절전 모드를 사용합니다. 큰 쿼리가 있거나 작업량이 많은 경우에는 성능을 확인하고 더 잘 사용하는 경우에는 최대 절전 모드를 사용합니다.
좋은 점은 Hibernate Transaction Manager가 (JdbcTemplate, 일반 jdbc) 및 최대 절전 모드 모두에서 작동한다는 것입니다.
데이터베이스 설계가 최대 절전 모드에 적합합니까?예인 경우 최대 절전 모드를 사용합니다.그렇지 않다면 당신은 그것을 피하는 것이 좋을 것입니다.Jdbctemplate에는 여러 가지 단점이 있으며 SQL 쿼리를 쉽게 유지 관리할 수 있는 방법이 있습니다.모든 파일을 저장하거나 파일 등에서 읽는 클래스를 만듭니다.열을 업데이트해야 하는 경우 표준 jdbc를 사용하여 열 이름을 검색할 수 있는 결과 집합 메타데이터를 가져올 수 있습니다.이것은 복잡할 수 있지만 문제를 해결하는 흥미로운 방법입니다.최대 절전 모드는 훌륭한 도구이지만 복잡한 데이터 모델로 인해 매우 까다로워집니다.
언급URL : https://stackoverflow.com/questions/11791145/spring-jdbctemplate-vs-hibernate-in-terms-of-performance
'programing' 카테고리의 다른 글
테스트 PHP 특성을 단위화하는 방법 (0) | 2023.08.25 |
---|---|
주어진 경로에서 엑셀 파일에 데이터 프레임 쓰기 (0) | 2023.08.25 |
iPhone에서 UIView 컨트롤러를 팝업으로 표시 (0) | 2023.08.25 |
연결되지 않은 원격 서버에 대한 Xdebug (0) | 2023.08.25 |
우리는 언제 멀티프로세싱을 호출해야 합니까?수영장. 가입? (0) | 2023.08.25 |