这个例子是官方的例子,这个例子形象的说明了jackrabbit的一般访问方法:
import javax.jcr.Repository; import javax.jcr.Session; import javax.jcr.SimpleCredentials; import javax.jcr.Node; import org.apache.jackrabbit.core.TransientRepository; /** * @author not ahuaxuan * @since 2009-5-19 * @version $Id$ */ public class HopFirst { /** * Second hop example. Stores, retrieves, and removes example content. */ /** * The main entry point of the example application. * * @param args * command line arguments (ignored) * @throws Exception * if an error occurs */ public static void main(String[] args) throws Exception { // 创建一个仓库 Repository repository = new TransientRepository(); // 创建一个session Session session = repository.login(new SimpleCredentials("username", "password".toCharArray())); try { // 得到根节点(发现root变量,root,一般树结构的顶层节点叫做root) Node root = session.getRootNode(); // 添加节点数据(仔细看hello节点和world节点的组织方式,可以发现它是一颗树形结构) Node hello = root.addNode("hello"); Node world = hello.addNode("world"); world.setProperty("message", "Hello, World!"); // 保存数据 session.save(); // 数据查询 Node node = root.getNode("hello/world"); System.out.println(node.getPath()); System.out.println(node.getProperty("message").getString()); // 数据删除 root.getNode("hello").remove(); session.save(); } finally { session.logout(); } } }看完这个例子(项目打包到附件中),有什么收获呢,从ahuaxuan看来,有三个收获:
1, 明确了jackrabbit做crud的一般流程,从而为以后使用jackrabbit打下了不够坚实的基础
2, 明确了jackrabbit中存储数据的一般结构,显然是一颗m叉树。
3, Session的用法和db connection颇为类似,和hibernate中的session更为类似(后面的文章中我们还可以看到和hibernate session更为类似的设计理念)。
例子虽然简单,而且也有一定的含金量,但是事实上还是过于肤浅,作为技术人员是要有点追求的,要深入理解jackrabbit,那么下面的有两步必须要做:
一, 分析jcr的域模型,和关键类的继承体系
二, 分解jcr的crud主体流程,递归深入下去,这样才能深刻理解其设计理念
三, 关键逻辑的算法
Ahuaxuan将会在后续的文章中和大家一起深入分析这些知识点。
最后附上可运行的例子代码,下载后直接导入项目