packagecom.bjsxt.hibernate;importjava.util.Set;
publicclassNode{
privateintid;
privateStringname;
privateintlevel;
privatebooleanleaf;
privateNodeparent;
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(ViewSource
forfulldoctype...)> -<hibernate-mapping
default-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"> <generator
class=
"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-many
class=
"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