Trọng lượng nhẹ thay thế cho Hibernate? [đóng cửa]


113

Tôi có một chương trình java người dùng duy nhất mà tôi muốn có dữ liệu lưu trữ trong cơ sở dữ liệu trọng lượng nhẹ như Derby hoặc Sqlite. Tôi muốn sử dụng một lớp trừu tượng hóa dữ liệu trong chương trình của mình. Hibernate dường như yêu cầu rất nhiều cấu hình và quá mức cần thiết cho những gì tôi cần. Những lựa chọn thay thế trọng lượng nhẹ cho Hibernate là gì?


2
Bạn có thể kiểm tra các lựa chọn thay thế cùng với việc sử dụng ví dụ (và cấu hình ví dụ với Spring) tại đây: github.com/bwajtr/java-persistence-frameworks-comparison
Břetislav Wajtr 30/12/16

CMobileCom JPA là một triển khai JPA nhẹ cho cả Java và Android. Kích thước của nó khoảng 380K. Nó nhẹ và nhanh chóng. cmobilecom.com
John

Câu trả lời:


142

Hibernate yêu cầu cấu hình bên cạnh 0 nếu bạn sử dụng chú thích. Nó thậm chí có thể tự động phát hiện các hạt được ánh xạ trong classpath! Tôi không thấy bất kỳ sự thay thế nào cho nó từ cả quan điểm đơn giản sức mạnh.

Nó cũng có thể tự hiển thị dưới dạng JPA, tức là (IMHO) thậm chí còn đơn giản hơn.


32
bên cạnh số không không phải là số không.
njzk2

12
cũng cần rất nhiều thư viện bên ngoài cố gắng sử dụng nó trên android: P
Sherif

4
Tôi đã cố gắng tìm một giải pháp thay thế đơn giản hơn cho Hibernate. Trong một dự án cá nhân, tôi đã sử dụng MyBatis (một cái tên khủng khiếp). Đó là công việc nhiều hơn Hibernate. Hibernate thực sự tiết kiệm rất nhiều mã SQL và giúp ích cho các mối quan hệ cha-con. Tôi cũng đã xem xét một vài ORM kiểu ActiveRecord dành cho Java. Không có gì có vẻ trưởng thành hoặc dễ dàng hơn Hibernate. Vì vậy, tôi sẽ quay lại Hibernate.
devdanke

56
câu hỏi không phải về ĐẠI SỐ?
Łukasz Gruner

8
Hibernate không phải là một sự thay thế nhẹ để Hiberernate
cosbor11

55

Thư viện ORMLite của tôi là một trong những thay thế như vậy. Nó hỗ trợ MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB và Sqlite, và có thể dễ dàng mở rộng cho những người khác. Nó sử dụng các chú thích để định cấu hình các lớp, hỗ trợ Spring tốt, trình tạo truy vấn linh hoạt, v.v.


OrmLite thực sự có vẻ hứa hẹn! Nhưng liệu dự án này có còn tồn tại? Không có phiên bản mới trong hơn một năm, không có câu trả lời để kéo các yêu cầu / vấn đề trên Github.
Stefan

3
Phiên bản 5.0 được phát hành vào tháng 6 năm 2016.
Lauri Laanti

Phiên bản 5.1 được phát hành vào ngày 19 tháng 2 năm 2018. Nhưng không thể so sánh với Hibernate chút nào và một số triển khai chú thích JPA không hoạt động bình thường.
M-Razavi

"so sánh với Hibernate"? Cả hai đều là ORM nhưng khác nhau rất nhiều. Về triển khai JPA, vui lòng điền vào báo cáo lỗi nếu bạn tìm thấy thứ gì đó @ M-Razavi.
Màu xám,

31

Nó vẫn yêu cầu cấu hình XML, nhưng hãy xem MyBatis (trước đây là iBatis) .


iBatis rất nhẹ. Bạn có thể dễ dàng xác định và kiểm soát ánh xạ SQL tới đối tượng của mình.
Berlin Brown

... phải bỏ phiếu cho iBatis, mặc dù hãy nhớ rằng nó không phải là một thay thế ORM vì nó không cố gắng cạnh tranh với những thứ như Hibernate. Đó là một loại động vật hơi khác một chút, nhưng phù hợp với những gì bạn đang tìm kiếm về trọng lượng.
vector

1
Bây giờ nó là MyBatis còn lại: mybatis.org
Vladislav Rastrusny

3
Tôi nghĩ rằng XML trong i / MyBatis thực sự là một lợi thế vì nó giữ các truy vấn phức tạp ở định dạng có thể dễ dàng sao chép vào bảng điều khiển SQL để thử nghiệm.
Peter Tillemans

22

jOOQ cung cấp một DSL thông thạo mô phỏng SQL trực tiếp trong Java như một tác dụng phụ cho các mục tiêu chính của nó là:

  • Tạo mã nguồn
  • Hỗ trợ đầy đủ cho SQL tiêu chuẩn bao gồm các tính năng của ngôn ngữ SQL như UNION, các SELECT lồng nhau, tất cả các loại JOIN, bí danh (ví dụ: tự tham gia), v.v.
  • Hỗ trợ rộng rãi cho SQL không tiêu chuẩn bao gồm UDT, các thủ tục được lưu trữ, các chức năng dành riêng cho nhà cung cấp, v.v.

Đọc về jOOQ trong bài viết này: http://java.dzone.com/anosystemments/simple-and-intuitive-approach hoặc truy cập trực tiếp trang web: http://www.jooq.org

(Tuyên bố từ chối trách nhiệm, tôi làm việc cho công ty đằng sau jOOQ)


3
đá jOOQ! Chúng tôi đã triển khai một dịch vụ ETL quy mô lớn với nó và không thể hạnh phúc hơn. Tôi đã sử dụng iBATIS và jOOQ cung cấp tất cả các lợi thế tương tự của SQL cấp thấp mà không có hàng loạt XML và thiếu an toàn kiểu.
do thám

3
Tôi quên đề cập đến một trong những tính năng tốt nhất của jOOQ: Các truy vấn phức tạp và / hoặc được tạo động có thể được tập hợp theo cách có kiểm soát và được xác minh bởi trình biên dịch Java, giúp bạn tránh khỏi tất cả những lỗi cú pháp không rõ ràng mà cơ sở dữ liệu ném ra và cung cấp hồi quy thời gian biên dịch phạm vi bảo hiểm khi lược đồ thay đổi theo bạn.
spieden

JOOQ là tuyệt vời nhưng rõ ràng của nó bây giờ không được tự do Oracle và Sybase nên rất nhiều người dân đang tránh khuôn khổ này và đang sử dụng như MyBatis
Makky

@Makky: Cảm ơn phản hồi của bạn. Tôi hy vọng rằng bạn đang ghi nhớ các đề xuất giá trị thực tế và rằng bạn sẽ không chuyển sang một khuôn khổ hoàn toàn khác chỉ dựa trên thực tế là một khung miễn phí và một khung khác thì không. Chi phí bảo trì và di cư này sẽ tạo ra trong bạn phần mềm là quá cao và vượt xa bất kỳ giấy phép thương mại hợp lý ...
Lukas Eder

15

Apache Commons DBUtils xử lý nhiều công việc khó khăn lặp đi lặp lại trong lập trình JDBC. Nó yêu cầu cấu hình nhỏ và dễ học. Nó không phải là một khuôn khổ ORM (theo cách của Hibernate và các khuôn khổ khác được đề cập ở đây) nhưng nó tự động hóa ánh xạ các cột SELECT tới các trường thành viên Java cũng như các tác vụ lập trình JDBC lặp đi lặp lại khác. Nó chắc chắn là nhẹ.


12

Bạn có thể xem qua Ebean ORM . - Không có phiên - tải chậm chỉ hoạt động - API đơn giản hơn để sử dụng và học hỏi.


nó có tương thích với SQLite và Android không?
endryha

Hỗ trợ SQLite đã được thêm vào. Tôi chưa thử nó trên Android.
Rob Bygrave

9

Cayenne đã phục vụ tôi tốt. Tương đối dễ hiểu và dễ sử dụng. Tôi thấy phần thiết kế ngược đặc biệt quyến rũ. Cấu hình có thể được thực hiện với GUI.


6

Tôi có thể đề xuất apache Empire-db. http://incubator.apache.org/empire-db/

Apache Empire-db là một thành phần bền vững dữ liệu quan hệ Nguồn mở cho phép định nghĩa truy vấn động độc lập với nhà cung cấp cơ sở dữ liệu cũng như truy xuất và cập nhật dữ liệu an toàn và đơn giản. So với hầu hết các giải pháp khác như triển khai Hibernate, TopLink, iBATIS hoặc JPA, Empire-db có cách tiếp cận khác biệt đáng kể, đặc biệt tập trung vào an toàn thời gian biên dịch , giảm dư thừa và cải thiện năng suất của nhà phát triển.

Một ví dụ:

// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
                        .append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;


2

Tôi có thể đến muộn một chút, nhưng tôi đã phát hành ActiveJDBC vào năm 2010, là một triển khai ORM của mẫu ActiveRecord, nhẹ hơn 10 lần so với Hibernate trong các phụ thuộc, nhanh hơn ít nhất hai lần vào thời gian chạy và không yêu cầu cấu hình hoặc chú thích.


1

Bạn có thể muốn xem qua trình xử lý ưu thế (trên sourceforge). Một cách tiếp cận nhẹ nhàng hơn cho sự bền bỉ. Hay bạn đang nghĩ về việc báo cáo chống lại DB?


1

Nếu việc sử dụng cơ sở dữ liệu quan hệ là không bắt buộc, hãy dùng thử db4o.


1

Tôi đã tạo sormula để thay thế cho ORM's nặng. Nó sẵn sàng cho CRUD, thân thiện với POJO, sử dụng, cấu hình và hiểu đơn giản. Có thể sử dụng cấu hình không. www.sormula.org


-2

Kiteframework cũng là khuôn khổ orm rất nhẹ. Nó cung cấp hầu hết tất cả các hoạt động db với cấu hình tối thiểu.

http://deipakgarg.github.com/Kite-ORM/

Tiết lộ: Tôi là tác giả của dự án này


3
Chào mừng bạn đến với Stack Overflow! Cảm ơn đã đăng câu trả lời của bạn! Hãy đảm bảo đọc kỹ Câu hỏi thường gặp về Tự quảng cáo . Cũng lưu ý rằng bạn bắt buộc phải đăng tuyên bố từ chối trách nhiệm mỗi khi bạn liên kết đến trang web / sản phẩm của chính mình.
Andrew Barber,

2
nó không được phát triển, không có bản phát hành hiện tại mới từ tác giả, bản phát hành dự kiến ​​cuối cùng là vào năm 2012.
Barun
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.