내 매핑에 문제가 있습니다. 직원 및 프로젝트 : 예를 들어 직원 매핑에서 다른 테이블을 매핑하는 데 "가방"이 있습니다. 문제는 직원 창을 열 때입니다.이 작업은 창을 여는 데 많은 시간 (10 초)이 걸립니다. 매핑을 어떻게하면 더 빠르게 만들 수 있습니까? 어쩌면 게으름 또는 가져 오기? 당신은 당신의 데이터베이스에서로드되고 있는지 알아 내기 위해 SQL Server Profiler를 사용해야합니다응용 프로그램의 속도를 향상시키기 위해 매핑을 만드는 방법은 무엇입니까?
1
A
답변
1
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="AdminProject"
namespace="AdminProject.Business.Entity">
<class name="Employee">
<id name="EmployeeId" type="int">
</id>
<property name="OperatorNum"
generated="always"
update="false"
insert="false"
type="int"/>
<property name="Password" type="string"/>
<property name="Name" type="string"/>
<property name="LastName" type="string"/>
<property name="DateBegin" type="DateTime"/>
<property name="DateEnd" type="DateTime"/>
<property name="Telephone" type="string"/>
<property name="Address" type="string"/>
<many-to-one
name="EmployeeState"
column="EmployeeStateId"
class="EmployeeState"
fetch="join"/>
<bag name="EmployeebyProject" lazy="false">
<key column="EmployeeId"/>
<one-to-many class="EmployeebyProject"/>
</bag>
<bag name="EmployeeComments" lazy="false">
<key column="EmployeeId"/>
<one-to-many class="EmployeeComments"/>
</bag>
</class>
</hibernate-mapping>
감사합니다 .. :
이
는 직원의 매핑입니다. 또는 SQL을 로그하도록 NHibernate를 설정할 수 있습니다. 이렇게하면 지연의 원인을 쉽게 볼 수 있습니다. 열심히 컬렉션을로드하여 발생했을 가능성이 큽니다 (매핑에lazy="false"
). 이 경우 단순히 true (기본값)로 설정할 수 있습니다.
<bag name="EmployeebyProject" lazy="true">
<key column="EmployeeId"/>
<one-to-many class="EmployeebyProject"/>
</bag>
<bag name="EmployeeComments" lazy="true">
<key column="EmployeeId"/>
<one-to-many class="EmployeeComments"/>
</bag>
여러분의 많은-to-one 연관은 (fetch="join"
) 열심히로드됩니다.
인기있는 방법 중 하나는 모든 연결을 게으르게 만드는 것입니다 (Lazy Default Fetch Plan). 그리고 연관로드가 필요할 것 같은 장소에서 열심히로드하십시오. 그러나 세션을 더 이상 사용할 수없는 경우 지연로드가 작동하지 않으므로 세션 관리에 따라 다릅니다. 이 book에는 가져 오기 계획 및 전략에 대한 설명이 아주 잘 나와 있습니다.
0
가방 매핑의 경우 lazy = "false"를 제거하십시오. 기본적으로 게으르다.
관련 문제
- 1. 내 응용 프로그램의 속도를 높이는 방법은 무엇입니까?
- 2. 프레임 속도를 향상시키기 위해 UIButton을 대체 할 대상은 무엇입니까?
- 3. 깜박임을 처리하고 속도를 향상시키기 위해 NSTextView 업데이트를 제어합니다.
- 4. 3-tier 응용 프로그램의 속도를 향상시키는 방법은 무엇입니까?
- 5. Silverlight 응용 프로그램의 프로필을 만드는 방법은 무엇입니까?
- 6. ClickOnce 응용 프로그램의 시작 속도를 높이는 방법
- 7. 환경에 따라 URL 매핑을 만드는 방법은 무엇입니까?
- 8. Sharepoint 사이트의 성능을 향상시키기 위해 수행 할 단계는 무엇입니까?
- 9. 진행 표시 줄이 응용 프로그램의 속도를 느리게합니까?
- 10. Ruby 응용 프로그램의 속도를 높이려면 어떻게합니까?
- 11. Java 응용 프로그램의 원시 바이너리를 만드는 방법은 무엇입니까?
- 12. HPUX에서 빌드를 향상시키기 위해 링커 옵션을 추가하십시오.
- 13. 응용 프로그램의 프리미엄 버전을 위해 App 구입을 추가하는 방법은 무엇입니까?
- 14. Java 기술을 향상시키기 위해 무엇을 배워야합니까?
- 15. ASP.net 응용 프로그램의 메뉴를 만드는 적절한 방법은 무엇입니까?
- 16. 레이블 너비를 굵게 만드는 방법은 무엇입니까? Struts2 응용 프로그램의 jsp에서?
- 17. iphone 응용 프로그램의 특정보기에서 화면보기를 비스듬하게 만드는 방법은 무엇입니까?
- 18. Xcode에서 Ipad 응용 프로그램의 막 대형 차트를 만드는 방법은 무엇입니까?
- 19. iPhone 응용 프로그램의 즐겨 찾기 탭을 만드는 방법은 무엇입니까?
- 20. 당신의 부드러운 기술을 향상시키기 위해 한 가장 효과적인 것은 무엇입니까?
- 21. 매핑을 위해 사용 가능한 네트워크 드라이브를 얻는 방법은 무엇입니까?
- 22. 응용 프로그램의 빌드 날짜를 응용 프로그램의 어딘가에 넣는 방법은 무엇입니까?
- 23. SQL 데이터베이스에서 GUI 로의 매핑을 만드는 가장 좋은 방법은 무엇입니까?
- 24. NHibernate 매핑을 디버깅하는 방법은 무엇입니까?
- 25. java 응용 프로그램을 설치하기 위해 GUI를 만드는 방법은 무엇입니까
- 26. MS SQL Server에 연결하는 응용 프로그램의 속도를 높이려면 어떻게합니까?
- 27. 콘솔 응용 프로그램의 세션을 설정하는 방법은 무엇입니까?
- 28. 응용 프로그램의 상태를 안전하게 캡처하는 방법은 무엇입니까?
- 29. 코드 적용 범위를 향상시키기 위해 실제로 어떤 기술을 사용 했습니까?
- 30. Java 응용 프로그램의 성능을 측정하는 방법은 무엇입니까?