Các default cache configuration cho các tổ chức có tên là entity
:
cấu hình bộ nhớ cache có thể khác nhau đối với từng loại dữ liệu được lưu trữ trong bộ nhớ cache . Để ghi đè lên các mẫu cấu hình bộ nhớ cache, sử dụng tài sản hibernate.cache.infinispan.data-type.cfg
nơi data-type
thể là một trong:
entity
Các đối tượng được lập chỉ mục bởi @Id
hoặc @EmbeddedId
thuộc tính.
immutable-entity
Đối tượng được gắn thẻ với @Immutable
chú thích hoặc đặt là mutable=false
trong tệp ánh xạ.
naturalid
Thực thể được lập chỉ mục bởi thuộc tính @NaturalId
của chúng.
collection
Tất cả các bộ sưu tập.
timestamps
Lập bản đồ loại thực thể → dấu thời gian sửa đổi lần cuối. Đã sử dụng để truy vấn bộ nhớ đệm.
query
Truy vấn ánh xạ → kết quả truy vấn.
pending-puts
Bộ nhớ đệm phụ cho khu vực sử dụng chế độ vô hiệu hóa bộ nhớ cache.
Giá trị mặc định cho collection
, immutable-entity
và naturalid
cũng là cấu hình cụ thể cho entity
, vì vậy bạn không cần phải cấu hình chúng riêng (nếu bạn không muốn cấu hình riêng biệt tất nhiên), như có thể thấy trong số documentation và source code.
Note
Nói chung, làm cho một bộ nhớ cache Hibernate L2 phân phối có thể không phải là một ý tưởng tốt, vì trường hợp thực thể được lưu trữ trong disassembled hydrated state trong bộ nhớ cache L2, có nghĩa là chỉ id của các đối tượng liên quan được lưu trữ cùng nhau với trạng thái của thực thể cha.
Giả sử bạn có các đối tượng sau (A
, B
, C
đều cachable):
@Entity
public class A {
@ManyToOne
private B b;
@OneToMany
private Collection<C> cs;
}
Thậm chí nếu bộ sưu tập cs
là cachable cũng có, để lắp ráp hoàn toàn một thực thể A
dụ từ bộ nhớ cache bạn sẽ phải các chuyến đi vòng quanh mạng sau đến các nút khác của cụm:
- Tìm nạp thực thể
A
trạng thái.
- Tìm nạp đối tượng
B
trạng thái dựa trên id được lưu trữ trong liên kết b
.
- Tìm nạp bộ sưu tập của
cs
id.
- Đối với mỗi id trong bộ sưu tập
cs
, hãy tìm nạp trạng thái tổ chức C
từng cái một.
Rõ ràng, nếu bạn đang lắp ráp bộ sưu tập A
trường hợp (từ kết quả của truy vấn ví dụ), tất cả những điều trên được thực hiện cho từng trường hợp A
. Điều này tất cả ngụ ý rằng đọc dữ liệu từ cơ sở dữ liệu trực tiếp (với tải cấu hình lười đúng cách, sử dụng ví dụ batch size), có thể hiệu quả hơn tất cả các chuyến đi vòng quanh mạng trong bộ nhớ cache được phân phối. Ngoài ra, đó là một trong những lý do tại sao bộ nhớ cache thực thể/bộ sưu tập nên chạy trong chế độ cụm không hợp lệ (dữ liệu được lưu trữ chỉ trên nút đọc/ghi, nhưng bị vô hiệu hóa trên các nút khác khi thay đổi).
Cấu hình bộ nhớ cache mặc định được đặt tên là 'thực thể'. Định cấu hình bộ nhớ cache có tên đó và nó sẽ áp dụng cho tất cả các thực thể. –
Nice .. thanks. bạn có một tài liệu tham khảo từ tài liệu cho điều đó không? – Bozho
http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#caching-provider-infinispan-config –