에 의해 생성되는 User
개체가 있다고합시다. User
객체는 사용중인 데이터베이스/저장소에 대해 아무것도 모릅니다 (좋은 설계라고 생각합니다).데이터베이스와 상호 작용하는 함수에 대한 모범 사례
User
을 만들 때 가장 평범한 사안으로 채워 넣기만하면됩니다. 이름, 주소 등. 그러나 객체 인스턴스화 후에는 모든 사용자 인스턴스화 (여러 테이블 필요 등)에 대해 상대적으로 비싼 연산을 수행하지 않으므로 userX.getTotalDebt()
, getTotalDebt()
메서드를 데이터베이스에 다시 연결해야 할 수도 있습니다. 내가 간단하게 getTotalDebt()
에 일부 SQL을 삽입하거나 연관성이 매우 빠르게 증가하는 Mapper
에 종속성을 다시 삽입하면됩니다.
상황이 자주 발생하기 때문에 분명히 좋은/우수 사례가 있지만 찾을 수 없거나이 문제를 완전히 잘못된 각도에서보고 있습니다.
그렇다면/ORM이 getTotalDebt() 메소드의 기능을 어디에서 구현 했습니까? 매퍼의 인스턴스에서, 구체적으로 - 데이터베이스의 더 많은 테이블에 참여함으로써? 왜냐하면 나는 당신이 너무 투명 프록시/게으른 로딩 방법을 싫어하는 라인 사이에서 읽었습니다. – hbogert
지연로드는 데이터베이스 예외를 데이터 계층 외부로 옮기고 조심하지 않으면 많은 SQL 쿼리를 생성 할 수 있습니다. 조인을하고 전체 목록을 반환하는 것이 좋습니다. – jgauffin
지금까지 통찰력을 가져 주셔서 감사합니다. 지금까지 조인 솔루션에 상당히 만족했습니다. 그러나 이것은 서로 다른 테이블을 계속해서 결합하는 일이 꽤 지루해지고 있습니다.이미 객체 생성 속도를 늦추고있는 groupby 절을 사용하기 시작했습니다. – hbogert