cuốn sách gpt4 ai đã làm

Khi đóng một Trình quản lý thực thể (giống hệt) có liên quan, còn các thực thể được tìm thấy hoặc thu được trước đó bởi Trình quản lý thực thể thì sao?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:06:31 28 4
mua khóa gpt4 Nike

Tôi đang sử dụng ThreadLocal và mẫu yêu cầu/thực thể để nhận các thực thể. Điều này xảy ra khi tôi đóng một trình quản lý thực thể và có một số thực thể ở chế độ nền mà tôi có thể chỉnh sửa, sao chép và sửa đổi, sau đó tôi muốn giữ lại hoặc hợp nhất với một trình quản lý thực thể mới. Tôi không biết đây có phải là giải pháp hợp pháp hay đúng đắn không!

Tôi không tìm thấy bài viết, câu hỏi hoặc câu trả lời nào liên quan đến vấn đề này. Có lẽ tôi quá hiểu nhưng tự hỏi liệu có một số vấn đề đã biết hoặc sự cố khi đóng Trình quản lý thực thể theo cách này hay không... (Tôi đoán các thực thể liên quan có thể tách ra sau khi làm trống và đóng nó)

Tôi quản lý các thực thể dưới dạng RESOURCE_LOCAL.

hoặc? Nếu tôi cảm thấy hài lòng: trình quản lý thực thể chỉ là cầu nối/đường dẫn đến bối cảnh bền vững và trình quản lý thực thể có thể thay thế được thì không có kết nối thực sự hoặc chặt chẽ giữa thực thể được quản lý và trình quản lý thực thể (theo nghĩa đó)...

câu trả lời hay nhất

Khi bạn đóng một EntityManager, tất cả các thực thể được quản lý của nósự tách biệt. Không có gì sai với điều đó. Bạn vẫn có thể sử dụng các thực thể tách rời làm đối tượng java, nhưng việc thay đổi thuộc tính của chúng sẽ không ảnh hưởng đến cơ sở dữ liệu (trừ khi bạn gắn lại nó). Ngoài ra, sau khi thực thể được tách ra, bạn không còn có thể tôn trọng các mối quan hệ tải từng phần không được khởi tạo trong khi thực thể vẫn được đính kèm.

Sau này bạn có thể tách thực thể bằng cách gọi hợp nhất() Phương pháp gắn lại nó vào một EntityManager khác. Ví dụ:

// Ở đây myEntity được quản lý bởi instanceManager1.
SomeEntity myEntity = thực thểManager1.find(SomeEntity.class, id);

// myEntity trở nên tách rời.
thực thểManager1.close();

// Tôi vẫn có thể làm việc với đối tượng java.
myEntity.setSomeProperty("blah");

// Ở đây myEntity được quản lý bởi instanceManager2.
// Về cơ bản, nó lấy thực thể hiện tại từ DB (dựa trên ID của nó),
// sau đó áp dụng bất kỳ thay đổi nào được thực hiện cho nó khi nó được tách ra.
myEntity = thực thểManager2.merge(myEntity);

// Nếu bạn cam kết tại thời điểm này, những thay đổi được thực hiện đối với myEntity while
// nó đã được tách ra sẽ được lưu giữ vào DB.

Để ngăn các thay đổi được thực hiện trong cơ sở dữ liệu "sau lưng bạn" khi các thực thể được tách ra (ví dụ: một ứng dụng khác sửa đổi hàng tương ứng), bạn có thể sử dụng @Phiên bản cánh đồng. Mỗi khi một thực thể được sửa đổi, phiên bản của nó sẽ thay đổi. Nếu bạn cố gắng hợp nhất các thực thể tách rời và phiên bản hiện tại được lấy từ cơ sở dữ liệu có phiên bản khác, nó sẽ ném ra Lạc QuanKhóaNgoại Lệ.

Khi đóng một Trình quản lý thực thể có liên quan (giống nhau), còn các thực thể được tìm thấy hoặc thu được trước đó bởi Trình quản lý thực thể thì sao? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21290807/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress