hibernate生成树

xiaoxiao2022-06-12  33

packagecom.bjsxt.hibernate;importjava.util.Set; publicclassNode{ //标识符 privateintid; //节点名称 privateStringname; //层次 privateintlevel; //是否叶子节点 privatebooleanleaf; //父节点*---1 privateNodeparent; //子节点1---* privateSetchildren; publicSetgetChildren(){ returnchildren; } publicvoidsetChildren(Setchildren){ this.children=children; } publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicbooleanisLeaf(){ returnleaf; } publicvoidsetLeaf(booleanleaf){ this.leaf=leaf; } publicintgetLevel(){ returnlevel; } publicvoidsetLevel(intlevel){ this.level=level; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicNodegetParent(){ returnparent; } publicvoidsetParent(Nodeparent){ this.parent=parent; }}

<?xmlversion="1.0"?> <!DOCTYPEhibernate-mapping(ViewSourceforfulldoctype...)> -<hibernate-mappingdefault-cascade="none"default-access="property"default-lazy="true"auto-import="true"> -<classname="com.bjsxt.hibernate.Node"table="t_node"mutable="true"polymorphism="implicit"dynamic-update="false"dynamic-insert="false"select-before-update="false"optimistic-lock="version"> -<idname="id"> <generatorclass="native"/> </id> <propertyname="name"unique="false"optimistic-lock="true"lazy="false"generated="never"/> <propertyname="level"unique="false"optimistic-lock="true"lazy="false"generated="never"/> <propertyname="leaf"unique="false"optimistic-lock="true"lazy="false"generated="never"/> <many-to-onename="parent"column="pid"unique="false"update="true"insert="true"optimistic-lock="true"not-found="exception"embed-xml="true"/> -<setname="children"lazy="extra"inverse="true"sort="unsorted"mutable="true"optimistic-lock="true"embed-xml="true"> <keycolumn="pid"on-delete="noaction"/> <one-to-manyclass="com.bjsxt.hibernate.Node"not-found="exception"embed-xml="true"/> </set> </class> </hibernate-mapping> packagecom.bjsxt.hibernate;importjava.io.File;importjava.util.Iterator;importjava.util.Set;importorg.hibernate.Session; publicclassNodeManager{ privatestaticNodeManagernodeManager; privateNodeManager(){ } publicstaticsynchronizedNodeManagergetInstance(){ if(nodeManager==null){ nodeManager=newNodeManager(); } returnnodeManager; } //创建树型结构 publicvoidcreateTree(Stringdir){ Sessionsession=HibernateUtils.getSession(); try{ session.beginTransaction(); Fileroot=newFile(dir); saveTree(root,session,null,0); session.getTransaction().commit(); }catch(RuntimeExceptione){ e.printStackTrace();session.getTransaction().rollback(); }finally{ HibernateUtils.closeSession(session);}} //递归创建一棵树 privatevoidsaveTree(Filefile,Sessionsession,Nodeparent,intlevel){ if(file==null||!file.exists()){ return; }booleanisLeaf=file.isFile(); Nodenode=newNode(); node.setName(file.getName());node.setLevel(level);node.setParent(parent);node.setLeaf(isLeaf);session.save(node);File[]subs=file.listFiles(); if(subs!=null&&subs.length>0){ for(inti=0;i<subs.length;i++){ saveTree(subs[i],session,node,level+1);}}} publicvoidprintTree(intid){ Sessionsession=HibernateUtils.getSession(); try{ session.beginTransaction(); Noderoot=(Node)session.load(Node.class,id); printNode(root);session.getTransaction().commit(); }catch(RuntimeExceptione){ e.printStackTrace();session.getTransaction().rollback(); }finally{ HibernateUtils.closeSession(session);}} privatevoidprintNode(Nodenode){ if(node==null){ return; } intlevel=node.getLevel(); if(level>0){ for(inti=0;i<level;i++){ System.out.print("|"); } System.out.print("--"); } System.out.println(node.getName() +(node.isLeaf()?"":"["+node.getChildren().size()+"]")); Setchildren=node.getChildren(); for(Iteratoriter=children.iterator();iter.hasNext();){ Nodechild=(Node)iter.next();printNode(child);}}}

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-4933956.html

最新回复(0)