2010-03-18 27 views
15

Như tôi đã viết trong tiêu đề, tôi đang cố gắng học Spring 3.0 (tôi đã biết Django, giá treo và vài khung MVC đơn giản) và cố gắng sử dụng Cassandra làm phụ trợ cho ứng dụng web của tôi.Có bất kỳ ví dụ/hướng dẫn nào về việc sử dụng Spring 3.0 với Cassandra làm phụ trợ không?

Có ví dụ thực tế nào về việc này không? Hoặc có thể một số hướng dẫn? Tôi biết về sự tồn tại của tài liệu của cả hai công nghệ, nhưng tôi đang tìm kiếm một cái gì đó "nhanh hơn" để đọc và làm cho tôi lăn.

+0

Vì vậy, bạn đang học Spring MVC, không mùa xuân, trong đó có một tập trung rộng hơn –

+0

@ mirror303: xin lỗi vì sự misconfusion, nhưng có, tôi đang tập trung thời gian của tôi để học Spring MVC, không phải toàn bộ công nghệ Spring. – zeroDivisible

+1

trong tương lai, hãy theo dõi dự án Dữ liệu mùa xuân. Họ đã lên kế hoạch hỗ trợ cho cassandra và HBase. http://www.springsource.org/spring-data –

Trả lời

11

Tôi là tác giả của Hector https://github.com/rantav/hector, khách hàng java hàng đầu cho cassandra vì vậy tôi sẽ khuyến khích bạn xem xét những gì nó cung cấp.

Trong khi cá nhân tôi đã không sử dụng hector với mùa xuân, chúng tôi đã nhận được một vài đóng góp bổ sung hỗ trợ mùa xuân. Xem ví dụ https://github.com/rantav/hector/blob/master/core/src/test/resources/cassandra-context-test-v2.xmlhttps://github.com/rantav/hector/blob/master/core/src/test/resources/cassandra-context-test-v2-new.xml

2

AFAIK không có hướng dẫn hoặc ví dụ "công khai" bao gồm Spring (3.0) kết hợp với Cassandra. Vì vậy, có lẽ bạn có thể nhìn vào nó :)

tôi sẽ khuyên bạn nên bắt đầu xem xét các thuật ngữ "mẫu" trong mùa xuân (ví dụ JDBCTemplateHibernateTemplate) và tạo ra một cái gì đó giống như một "CassandraTemplate".

2

Nếu bạn đã quen thuộc với khung công tác MVC thì bạn nên biết rằng cơ sở dữ liệu/kho dữ liệu nào bạn sử dụng trong phần phụ trợ sẽ không ảnh hưởng đến toàn bộ ứng dụng MVC hoặc cách cấu trúc mọi thứ - nó chỉ ảnh hưởng đến dữ liệu của bạn và cách nó lấy dữ liệu.

Với Spring MVC, thực tế được chấp nhận là bạn đại diện cho mô hình dữ liệu của mình dưới dạng một loạt "mô hình/lớp miền", thường chỉ là POJO để giữ dữ liệu của bạn. "Miền" ở đây có nghĩa là nó có liên quan đến miền vấn đề của bạn; vì vậy nếu bạn có một ứng dụng đề cập đến khách hàng sắp xếp thứ bạn muốn có một lớp học Customer, một lớp học Order, v.v.

Mỗi trong ba lớp ứng dụng MVC của bạn - bộ điều khiển, logic dịch vụ/kinh doanh lớp và lớp DAO tương tác với các lớp mô hình miền này. Vì lớp DAO chịu trách nhiệm truy xuất hoặc cập nhật dữ liệu này trong phần phụ trợ, điều này có nghĩa là lớp DAO cần biết cách lấy lớp Customer hoặc Order từ Cassandra, cách cập nhật một số trường nhất định Customer, v.v.

Vì vậy, không có gì đặc biệt về cách bạn sẽ tự xây dựng ứng dụng Spring MVC của mình khi sử dụng Cassandra hoặc bất kỳ cơ sở dữ liệu "NoSQL" nào khác. Bạn sẽ chỉ cần cung cấp các triển khai khác nhau của các lớp DAO có thể giao tiếp với Cassandra.

Nếu bạn đang hỏi liệu có bất kỳ tiện ích Spring được xây dựng sẵn nào có thể truy cập Cassandra (hoặc tiết kiệm) thì câu trả lời là không, ít nhất là trong Spring 3.0. Nhưng điều này nên được khá đơn giản để viết một khi bạn có bộ giao diện DAO và tất cả các lớp khác của ứng dụng của bạn tại chỗ.

+0

matt b, cảm ơn Bạn đã giải thích tuyệt vời về mọi thứ. Tôi sẽ cố gắng tìm thêm thông tin và tôi hy vọng rằng bạn đúng về thực tế, rằng mọi thứ sẽ trở nên rõ ràng ngay sau khi tôi sẽ có tất cả các lớp tại chỗ. – zeroDivisible

1

Tôi không nghĩ có thư viện cassandra-spring nào khả dụng. Tuy nhiên, bạn có thể sử dụng Spring để khởi tạo và cấu hình bean nói chuyện với Cassandra, và tiêm nó vào bất kỳ bean nào khác mà bạn có đòi hỏi sự kiên trì. Bằng cách đó bạn có thể để nó được hưởng lợi từ Inversion Of Control và tất cả các tiện ích mà Spring ApplicationContext cung cấp. Bằng cách đó bạn có thể tách mã nhận biết kho dữ liệu cassandra khỏi logic nghiệp vụ của bạn và sử dụng lò xo.

Vì vậy, thành phần của bạn nói chuyện với Cassandra sẽ có định dạng [@Repository][1], ví dụ: nó là một Kho lưu trữ, giống như một kho lưu trữ mà nói, ví dụ như một nguồn dữ liệu JDBC.

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