Spring + Hibernate có được ưa thích thay vì EJB 3 không?


12

Theo nhận thức của tôi, bất cứ khi nào các dự án JEE mới bắt đầu (nơi các công nghệ này sẽ được áp dụng), mọi người thích sử dụng kết hợp Spring + Hibernate thay vì EJB 3.

Có vẻ như các lập trình viên cơ sở thậm chí còn được khuyên nên làm điều đó thay vì EJB.

Đây là sở thích cá nhân hay có lý do thích hợp cho nó? (ví dụ: vết sẹo cá nhân được tạo bởi các phiên bản EJB trước đó gây ra sự không tin tưởng vào EJB hoặc sự phình to công nghệ so với lý do hiệu suất hoặc đường cong học tập)?


2
Tôi gần như nghĩ rằng đó là một sự kiện mang tính lịch sử bởi vì ejb không tốt bằng mùa xuân + ngủ đông tại một thời điểm ... bây giờ tôi nghĩ rằng một trường hợp có thể được thực hiện cho ejb trong một số trường hợp ...
Rig

Câu trả lời:


11

Các khung EJB 3+ thực sự khá tốt khi chúng đi kèm với JPA như là một câu trả lời cho các khung Persistence được cấu hình chú thích, cũng như CDI cho phép tiêm phụ thuộc được cấu hình chú thích. Bạn cũng thêm vào đầu của mối hàn đó. Mặt khác, Spring chỉ bắt kịp trong trò chơi với cấu hình thông qua chú thích.

Với điều đó đã được nói rằng backlack lịch sử chống lại EJB1 và ​​2 không nên được giảm giá. Họ đã không giải quyết vấn đề bằng cách viết các ứng dụng doanh nghiệp, họ đã thất bại một cách ngoạn mục . Đó là một sự thất bại hoàn toàn về phía các nhà thiết kế để có được một xung về các vấn đề thực sự mà các nhà phát triển ứng dụng web và doanh nghiệp phải đối mặt và lần lượt đưa ra các giải pháp mà họ thực sự cần.

Thêm vào đó là sự ngờ vực rằng có một số sự rung chuyển và mất ổn định nghiêm trọng với hướng đi hiện tại của Java vào thời điểm này và thiếu niềm tin vào những người quản lý và chủ sở hữu hiện tại của Sun JVM, trong Oracle. Nhiều người không có niềm tin rằng Oracle sẽ cải thiện Java và dẫn dắt và cũng có lo ngại rằng Quỹ Phần mềm Apache có thể sẽ ném vào khăn. Ngày càng có nhiều người tìm kiếm OpenJDK cho tương lai của Java nhưng đó không phải là nơi cần thiết để áp dụng cho Doanh nghiệp.

Một số người coi tất cả những điều này là mùi của cái chết vì các ứng dụng doanh nghiệp là lý do hàng đầu khiến Java trong lịch sử là ngôn ngữ lập trình số 1 trên thế giới miễn là nó có. Đây là lý do tại sao Microsoft đã đạt được rất nhiều cơ sở chống lại Java với các công nghệ .NET.

Các nhà phát triển ứng dụng Java không dựa trên doanh nghiệp đang ngày càng hướng tới OpenJDK và các khung công tác nguồn mở khác để giúp xây dựng các giải pháp của họ và một số không bao giờ nhìn lại. Người ta có thể nói rằng đó là một trường hợp quá muộn khi đưa JEE trở lại hàng đầu về tính hợp pháp, mặc dù về mặt kỹ thuật, JEE có thể và thực hiện từng bước với ứng dụng Spring có thể so sánh của bạn.


Cũng tóm tắt và nói marple. Điều này cũng chia sẻ tầm nhìn của tôi về EJB.
onigunn

4

EJB có rất nhiều hành lý. Một phần của hành lý đó xuất phát từ thực tế là nó đã nhắm mục tiêu sai đối tượng. Phần khác là hai phiên bản đầu tiên là hoàn toàn tào lao.

Nếu bạn nhìn vào các phiên bản EJB ban đầu, thiết kế là nhà phát triển EJB có thể tạo ra một giải pháp đóng gói có thể được sử dụng trong bất kỳ vùng chứa tuân thủ EJB nào. Đối với một cửa hàng trong nhà, mức độ trừu tượng này là không cần thiết. Đó là một giải pháp hoàn hảo để tạo ra một thị trường thịnh vượng cho các nhà cung cấp linh kiện EJB của bên thứ ba. Tuy nhiên, các nhà cung cấp Container đã quá nhiệt tình trong việc tiếp thị của họ và đang khiến hàng tấn bán sản phẩm của họ như một giải pháp khả thi cho sự phát triển mỗi ngày. Điều này sẽ tương đương với việc xây dựng tất cả mã ứng dụng của bạn dưới dạng các thành phần COM +.

Để biết thêm về nền tảng của thông số J2EE ban đầu, hầu hết các nhà cung cấp có liên quan đều có máy chủ CORBA và muốn tận dụng các sản phẩm này trong tương lai. Thông số EJB được xây dựng qua giao thức IIOP (thực ra là Java RMI, một lớp mỏng hơn IIOP). CORBA đã bị từ chối vì tính phức tạp của nó và EJB chỉ là CORBA được ngụy trang nên nó mang theo nhiều vấn đề mà CORBA gặp phải. Trên thực tế, sự trừu tượng của EJB khiến nó khó hoạt động hơn so với việc triển khai CORBA thuần túy.

Một khi cao su rơi xuống mặt đường, mọi người nhận ra rằng hiệu suất với EJB là tồi tệ. Với mỗi cuộc gọi là một cuộc gọi từ xa và khó khăn trong việc bắt đầu ứng dụng và chạy chính xác để bắt đầu, mọi người nhanh chóng tìm kiếm các lựa chọn thay thế. Hibernate và Spring chạy trong một thùng chứa JSP đã trở thành giải pháp.

EJB 3 "thông qua" phương pháp này. Nhưng đó vẫn là một sự thỏa hiệp chung không mang lại nhiều lợi ích. Vẫn chưa có thị trường thành phần EJB của bên thứ 3 nên thực sự không có điểm nào trong việc sử dụng bộ chứa EJB để xây dựng giải pháp của bạn.

Mẩu chuyện dài. Trong khi EJB 3 là một rộng lớn cải thiện so với hai lần lặp đầu tiên, nó vẫn không cung cấp đủ lợi ích để bù đắp chi phí.


This would be the equivalent of building all of your application code as COM+ components. ... Thật kinh khủng
maple_shaft

3
Chính xác;) Tôi đã làm việc với một dotcom vào năm 2001 và quyết định rằng họ sẽ chuyển ứng dụng PERL của họ (điều đó làm việc rất tốt với bạn) cho J2EE. Các "kiến trúc sư" cho nỗ lực này đã có một tháng tập huấn J2EE tập thể (chưa bao giờ viết một dòng Java nào trước đó). Câu nói yêu thích của tôi "Chà, tôi thực sự giỏi về PERL, chọn Java là vấn đề chỉ cần học một cú pháp mới." Tôi đã gửi sơ yếu lý lịch của mình cho Monster ngày hôm đó.
Michael Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.