2010-06-23 26 views
5

Tôi đang cố gắng thực thi truy vấn bằng EclipseLink theo tài liệu crappy tại http://wiki.eclipse.org/Introduction_to_EclipseLink_Expressions_%28ELUG%29, nhưng mỗi khi bạn cần thực thi Biểu thức, nó sử dụng biến được gọi là "phiên", nhưng không có nơi nào nó giải thích biến "phiên" này đến từ đâu. Tôi đã có một tập tin persistence.xml và tôi có thể chạy một javax.persistence.Query trên cơ sở dữ liệu của tôi, vì vậy tôi biết kết nối hoạt động, nhưng tôi không thể tìm ra nơi "phiên" đến từ đâu. Một chút giúp đỡ xin vui lòng?Tài liệu EclipseLink không giải thích "phiên"

Câu hỏi phụ: Tôi đã có một thời gian khủng khiếp khi cố gắng làm cho EclipseLink hoạt động, mặc dù mọi người đều nói nó tuyệt vời như thế nào so với Hibernate. EclipseLink có xứng đáng với thời gian và sự thất vọng của tôi không, hay tôi nên bỏ nó và thử một cái gì đó giống như Hibernate thay thế?

Cảm ơn

Trả lời

4

Tôi khuyên bạn nên đọc this.

Trong EclipseLink, có các loại phiên khác nhau. Nếu không đi vào chi tiết, bạn có thể nói rằng một phiên là một cái gì đó giống như một giao dịch. Trong một EclipseLink, một phiên thường là một đơn vị công việc, mà biết những gì các thực thể đã thay đổi/thêm/xóa hoặc bất cứ điều gì.

Bạn có thể lấy một phiên như vậy trong EclipseLink, khi gọi API độc quyền sau trên JPA EntityManager của bạn:

//EntityManagerImpl has to be imported as org.eclipse.persistence.internal.jpa.EntityManagerImpl 
Session session = ((EntityManagerImpl) entityManager).getActiveSession(); 

Trước khi gọi này, bạn nên chắc chắn rằng bạn đang trong một giao dịch.

+1

Cảm ơn, câu trả lời này đã giúp tôi tìm thấy những gì tôi đang tìm kiếm. Tuy nhiên, ở giữa câu trả lời này và bản phát hành EclipseLink 2.3, một số thay đổi API đã xảy ra và lớp này bây giờ được gọi là [org.eclipse.persistence.jpa.JpaEntityManager] (http://www.eclipse.org/eclipselink/api/2.3 /org/eclipse/persistence/jpa/JpaEntityManager.html). –

1

là EclipseLink giá trị thời gian và thất vọng của tôi, hoặc nên tôi chỉ bỏ nó và thử một cái gì đó như Hibernate để thay thế?

Bạn hoàn toàn có thể đánh giá xem đó có phải là "đáng giá" cho bạn hay không.

Nhưng tôi muốn chỉ ra rằng lãng phí thời gian và thất vọng khi học các công nghệ mới chỉ là một phần của đặc tả công việc cho kỹ sư phần mềm. Nếu bạn không thể lấy nó, bạn nên nghiêm túc xem xét một sự nghiệp đòi hỏi ít hơn.

4

EclipseLink được sinh ra từ sự đóng góp của Oracle Toplink cho Quỹ Eclipse, như Hibernate, là một mã độc quyền độc quyền và tồn tại trước JPA. Vì vậy, như Hibernate, nó dựa trên một động cơ sở hữu độc quyền và các khái niệm độc quyền hoặc trừu tượng. Phiên làm việc của EclipseLink là một trong số chúng (và khác với phiên của Hibernate, có thể so sánh hơn với EclipseLink UnitOfWork).

Đó là nơi mà JPA do thỏa thuận. JPA cung cấp một thống nhấtchuẩn API mà các sản phẩm như EclipseLink hoặc Hibernate thực hiện. Điều này không có nghĩa là họ đã xóa các tính năng sở hữu độc quyền và nếu bạn không ngại không di chuyển, bạn có thể sử dụng chúng. Liên kết được đăng về Biểu thức là một ví dụ.

Bây giờ, nếu bạn muốn sử dụng và tìm hiểu JPA, bạn nên dính vào JPA (và đây sẽ là lời khuyên của tôi). Nếu bạn muốn sử dụng các tính năng sở hữu độc quyền, bạn sẽ phải học những điều về cơ chế bền vững cơ bản.

Về tài liệu của EclipseLink, tôi không thể nói rằng tôi thích nó ngay cả khi tôi thành công trong việc tìm kiếm con đường của tôi, có lẽ vì tôi đã có một số kinh nghiệm với JPA. Nhưng điều này là chủ quan tôi đoán và những người khác có thể có a different opinion (Tôi không đồng ý, nhưng như tôi đã nói, đây là chủ quan).

Tuy nhiên, Hibernate chắc chắn là phổ biến hơn và có cộng đồng rộng hơn, nhiều hướng dẫn hơn, v.v. và tôi tìm thấy tài liệu của họ rất tốt. Tôi không biết những gì bạn dựa trên sự lựa chọn của bạn nhưng, từ một quan điểm hỗ trợ cộng đồng xem, Hibernate chắc chắn thắng. Chỉ cần ghi nhớ rằng điều này không có nghĩa là bạn sẽ không phải đối mặt với sự thất vọng với Hibernate quá :)

2

Phần lớn tài liệu gốc trên EclipseLink wiki trước ngày triển khai JPA của chúng tôi. Chúng tôi đang trong quá trình cập nhật nó thành tập hợp các trang wiki tập trung nhiều hơn JPA. Hầu hết các hoạt động mà người dùng cần có thể được thực hiện với JPA và với việc triển khai JPA 2.0 của chúng tôi thậm chí còn ít nhu cầu phát sinh hơn để sử dụng các phiên bản gốc.

Bạn có thể cho chúng tôi biết bạn đang cố gắng làm gì không và chúng tôi có thể hỗ trợ trực tiếp hoặc đưa bạn vào tài liệu ở nội dung phù hợp nhất.

Mặc dù tôi đang tận hưởng giao diện stackoverflow, EclipseLink Forum cung cấp hỗ trợ tích cực nhất từ ​​các ủy viên của dự án.

Doug

+0

Cảm ơn thông tin Doug! –

Các vấn đề liên quan