昨天写了前台生成视图所使用的JS代码,没有涉及到后台,其实后台实现有多种途经,如果你的树不想具备扩展功能,所有的功能都是固定的,不需要将节点加到数据库里面,这个时候,你可以使用txt,js,jsp,xml等任何你喜欢的方式存储你的节点数据,只要你喜欢,就是可以的,个人觉得,存储到xml和数据库中,是最为方便的,扩展也最为容易,特别是存储在数据库中,再结合系统的权限系统,做一棵带有严格权限控制的树,对搭好一个项目的基础框架,是很有用的.

做一小推广,希望大伙可以接受~~域名(www.faceye.com/cn/net)准备出售.我个人对域名有绝对的拥有权,在中国万网注册,由于没有时间去开发,有兴趣的朋友可以和我联系,也可以合作开发.联系方式:MSN:myecsun@hotmail.com,QQ:82676683, Mail:ecsun@sohu.com

后台的数据库实现方式有很多种,有些人喜欢生成一棵树用几张数据库表,有多少级节点,就用多少个数据库表,这是一种穷举的做法,个人觉得,扩展性不够强,这里我们使用一张数据库表存储所有的节点数据.

1.给出实体类的实现:

package com.faceye.core.service.security.model;

import java.util.HashSet;
import java.util.Set;

import com.faceye.core.componentsupport.dao.model.Domain;
import com.faceye.core.dao.hibernate.model.BaseObject;
/**
 * 
 * @author:宋海鹏
 * @Connection:E_mail:ecsun@sohu.com/myecsun@hotmail.com QQ:82676683
 * @Copy Right:www.faceye.com
 * @System:www.faceye.com网络支持系统
 * @Create Time:2007-9-22
 * @Package com.faceye.core.service.security.model.Tree.java
 * @Description:树形结构实体类
 */
public class Tree extends BaseObject {

  private String action;
  private Tree parentTree;
  private Set<Tree> childrenTrees=new HashSet(0);
  private Domain domain;
 
  private String url;
public Set<Tree> getChildrenTrees() {
	return childrenTrees;
}

public void setChildrenTrees(Set<Tree> childrenTrees) {
	this.childrenTrees = childrenTrees;
}

public Tree getParentTree() {
	return parentTree;
}

public void setParentTree(Tree parentTree) {
	this.parentTree = parentTree;
}

public String getAction() {
	return action;
}

public void setAction(String action) {
	this.action = action;
}

public String getUrl() {
	return url;
}

public void setUrl(String url) {
	this.url = url;
}

public Domain getDomain() {
	return domain;
}

public void setDomain(Domain domain) {
	this.domain = domain;
}
}


说明:
1).BaseObject 没有什么好说的,里面有两个属性,id,name,(getter/setter),再加上几个基础的方法.
2).Domain 是我为了做全局控制,加上的一个属性,大伙不用理会这个对像,可以不加这个对像.说这个对像的话,涉及到的内容有点多,以后树写完了,分开写了.

2.xml映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
	<class name="com.faceye.core.service.security.model.Tree"
		table="SYS_TREE">
		<id name="id" unsaved-value="" type="string">
			<column name="id" length="32"></column>
			<generator class="uuid.hex"></generator>
		</id>
		<property name="name" type="string">
			<column name="name" length="50"></column>
		</property>
		<property name="action" type="string">
			<column name="action" length="255"></column>
		</property>
		<property name="url" type="string">
			<column name="url" length="255"></column>
		</property>
		<many-to-one name="parentTree" column="PARENTID"
			class="com.faceye.core.service.security.model.Tree"
			cascade="save-update" />
		<many-to-one name="domain" column="domain_id"
			class="com.faceye.core.componentsupport.dao.model.Domain"
			cascade="save-update" />
		<set name="childrenTrees" cascade="save-update"
			inverse="true">
			<key column="PARENTID" />
			<one-to-many
				class="com.faceye.core.service.security.model.Tree" />
		</set>
	</class>

	<query name="queryTrees">
		<![CDATA[ from Tree t ]]>
	</query>
</hibernate-mapping>


说明:
1).同样,在这里面不用关注domain对像.


实体和xml的结构基本就这样了,数据库结构由这两个文件来生成了,萝卜白菜各有所爱,我喜欢用ant来生成.自己看文档了.
评论
kaki 2008-01-22
好想要有JDK50支持啊。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

ecsun
搜索本博客
我的相册
959d6764-20ee-3f5d-8e7d-62b829f243a0-thumb
Faceye基础版(开源)新建标签页
共 24 张
最近加入圈子
存档
最新评论