正如我在标题中所写,我正在尝试学习 Spring 3.0(我已经了解 Django、Pylons 和一些更简单的 MVC 框架)并尝试使用 Cassandra 作为我的 Web 应用程序的后端。
有没有这样做的现实世界的例子?或者也许一些教程?我知道这两种技术的文档的存在,但我正在寻找“更快”的东西来阅读并让我滚动。
正如我在标题中所写,我正在尝试学习 Spring 3.0(我已经了解 Django、Pylons 和一些更简单的 MVC 框架)并尝试使用 Cassandra 作为我的 Web 应用程序的后端。
有没有这样做的现实世界的例子?或者也许一些教程?我知道这两种技术的文档的存在,但我正在寻找“更快”的东西来阅读并让我滚动。
我是 Hector https://github.com/rantav/hector的作者,它是 cassandra 的领先 Java 客户端,所以我鼓励您看看它提供的内容。
虽然我个人没有在 spring 中使用 hector,但我们确实得到了一些增加 spring 支持的贡献。参见例如https://github.com/rantav/hector/blob/master/core/src/test/resources/cassandra-context-test-v2.xml和https://github.com/rantav/hector/blob /master/core/src/test/resources/cassandra-context-test-v2-new.xml
AFAIK 没有“公共”教程或示例涵盖 Spring(3.0)与 Cassandra 的结合。所以也许你可以调查一下:)
我建议开始查看 Spring 中的“模板”术语(例如JDBCTemplate和HibernateTemplate)并创建类似“CassandraTemplate”的东西。
如果您已经熟悉 MVC 框架,那么您应该知道您在后端使用的数据库/数据存储不应影响您的整个 MVC 应用程序,或者您如何构建事物 - 它只会影响您的数据层及其方式检索数据。
使用 Spring MVC,公认的做法是将数据模型表示为一系列“域模型/类”,它们通常只是保存数据的 POJO。这里的“域”表示与你的问题域有关;因此,如果您有一个处理客户订购商品的应用程序,那么您希望有一个Customer
类、一个Order
类等。
MVC 应用程序的三层中的每一层——控制器、服务/业务逻辑层和 DAO 层都与这些域模型类交互。由于 DAO 层负责在后端检索或更新这些数据,这意味着 DAO 层需要知道如何从 Cassandra 获取您的Customer
或Order
类,如何更新某些Customer
字段等。
因此,在使用 Cassandra 或任何其他“NoSQL”数据库时,如何构建 Spring MVC 应用程序本身并没有什么特别之处。您只需要提供可以与 Cassandra 通信的 DAO 类的不同实现。
如果您询问是否有任何预构建的 Spring 实用程序可以访问 Cassandra(或 Thrift),那么答案是否定的,至少就 Spring 3.0 中的内容而言。但是一旦你设置了 DAO 接口和应用程序的所有其他层,这应该很容易编写。
我认为没有任何可用的 cassandra-spring 库。但是,您可以使用 Spring 实例化和配置与 Cassandra 对话的 bean,并将其注入您拥有的任何其他需要持久性的 bean。这样你就可以让它受益于控制反转和 Spring ApplicationContext 提供的所有功能。这样,您可以将知道 cassandra 数据存储的代码与业务逻辑分开并使用 spring。
因此,与 Cassandra 对话的组件将具有[@Repository][1]
原型,例如它是一个存储库,就像一个存储库一样,例如与 JDBC 数据源对话。
我参与了一个使用 Spring 和 Cassandra 的项目,名为 Easy Cassandra。此处提供了一个示例:
https ://weblogs.java.net/blog/otaviojava/archive/2013/08/25/run-cassandra-spring-data