Tôi có một ứng dụng với khoảng 3000 thực thể (tôi biết nó rất nhiều nhưng tôi không thể thay đổi nó). Khi ứng dụng tải nó mất Hibernate một phút để làm tất cả các thiết bị đo đạc và các công cụ thiết lập SessionFactory.
Tôi đã tự hỏi nếu tôi có thể cấu hình Hibernate để làm các thiết bị đo đạc trên các lớp học ban đầu trong thời gian xây dựng.
Bằng cách này tôi có thể tránh 3000 lớp proxy được tạo bổ sung và chi phí khổng lồ khi khởi động ứng dụng.
Tôi đã tìm thấy một số thông tin về thiết bị thời gian xây dựng Hibernate (org.hibernate.tool.instrument.javassist.InstrumentTask
) nhưng không rõ liệu điều này có thay thế hoàn toàn công cụ thời gian chạy hay chỉ xử lý cơ chế tìm nạp tài sản lười biếng Hibernate.
Bất kỳ thông tin nào về cách di chuyển thế hệ proxy để tạo thời gian sẽ được đánh giá cao.Di chuyển thiết bị Hibernate để xây dựng thời gian
Trả lời
Có, bạn có thể. Có một tác vụ Ant trong mã Hibernate: org.hibernate.tool.instrument.javassist.InstrumentTask
.
<target name="instrument" depends="compile">
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath refid="<some-ant-path-including-hibernate-core-jar>"/>
<classpath path="<your-classes-path>"/>
</taskdef>
<instrument verbose="true">
<fileset dir="<your-classes>">
<include name="*.class"/>
</fileset>
</instrument>
</target>
Tôi cũng đã thấy một số biểu tượng dựa trên Maven.
Tôi đã nhìn thấy các đoạn mã plugin nhưng câu hỏi đặt ra là liệu nó có thay thế thiết bị chạy theo thời gian (và sẽ giảm thời gian tải) không? –
Tìm thấy giải pháp trên internet. Đã thử nó nhanh chóng, và nó có vẻ làm việc. Hy vọng tôi không đến muộn ..
Ý tưởng là sử dụng maven-antrun-plugin. Bạn cần phải có điều này trong tệp pom.xml của bạn trong phần xây dựng/bổ trợ.
Trong ví dụ dưới đây, đừng quên: - để thay thế $ {hibernate.version} và $ {javassist.version} bằng phiên bản bạn đang sử dụng. - để sửa đổi các quy tắc bao gồm có InstrumentTask chỉ chạy trên thực thể của bạn
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>Instrument domain classes</id>
<configuration>
<tasks>
<taskdef name="instrument"
classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.dependency.classpath"/>
<path refid="maven.plugin.classpath"/>
</classpath>
</taskdef>
<instrument verbose="true">
<fileset dir="${project.build.outputDirectory}">
<include name="**/model/**/*.class"/>
</fileset>
</instrument>
</tasks>
</configuration>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
</dependencies>
</plugin>
Kể từ Hibernate 4.2.8 bạn có thể sử dụng hibernate-nâng cao-maven-plugin:
<build>
<plugins>
<plugin>
<groupId>org.hibernate.orm.tooling</groupId>
<artifactId>hibernate-enhance-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-test-resources</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 1. Giảm thời gian xây dựng Visual Studio
- 2. Thời gian xây dựng Windows Mobile 6.5 (VS2008)
- 3. ứng dụng iPhone được xây dựng để mô phỏng, sẽ không xây dựng với thiết bị
- 4. Tôi nên std :: di chuyển một shared_ptr trong một nhà xây dựng di chuyển?
- 5. Thiết kế một giao thức mạng cho dữ liệu thời gian thực/thiết bị di động
- 6. Là một nhà xây dựng di chuyển riêng để ngăn chặn di chuyển?
- 7. Thời gian xây dựng lâu dài với sbt android-plugin
- 8. std :: make_shared, std :: unique_ptr và di chuyển nhà xây dựng
- 9. Tắt di chuyển trên thiết bị di động
- 10. Tạo mẫu T4 khi chạy (thời gian xây dựng)?
- 11. Cách tăng tốc thời gian xây dựng? (C#/Unmanaged C++)
- 12. GCC/Tối ưu hóa thời gian xây dựng
- 13. AOSP xây dựng trên thiết bị tùy chỉnh
- 14. Cách tốt nhất để tạo dấu thời gian di chuyển
- 15. định dạng mã tại thời gian xây dựng
- 16. Tại sao di chuyển-nhà xây dựng không được gọi?
- 17. Hỗ trợ JPA/Hibernate để di chuyển?
- 18. Làm thế nào để chuyển đổi thời gian thành múi giờ của thiết bị iPhone?
- 19. Thời gian chờ thích hợp cho kết nối trên thiết bị di động là gì?
- 20. Đồng bộ hóa dấu thời gian trên nhiều thiết bị
- 21. Di chuyển khung thực thể: Thời gian chờ SqlException trong khi di chuyển
- 22. Đồng bộ thời gian JS giữa nhiều thiết bị
- 23. Tính toán trung bình di chuyển theo thời gian
- 24. Làm cách nào để sửa đổi tên cài đặt của .dylib tại thời gian xây dựng
- 25. Tôi có thể sử dụng mẫu thiết kế trình xây dựng cùng với hibernate không?
- 26. VS 2008 Chuyên nghiệp, Thiết bị thông minh .NET C# project - xây dựng chậm
- 27. Javascript profiling trên thiết bị di động
- 28. Kết nối với máy chủ Jekyll được xây dựng cục bộ bằng thiết bị di động trong mạng LAN
- 29. Sửa lỗi tốc độ: Cách xóa Thời gian trễ 300ms trong Ứng dụng dành cho thiết bị di động jQuery
- 30. Nhóm Hibernate theo khoảng thời gian
Sau khi kích hoạt thời gian xây dựng thiết bị đo đạc Tôi không nhận thấy bất kỳ thay đổi nào trong thời gian tải/bộ nhớ tiêu thụ. –