<%@ page contentType="text/html; charset=gb2312"%> 用hibernate对递归数据的操作
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
用hibernate对递归数据的操作
     发布者: 发布时间:2007-11-26
在工作中,我们常常会碰到具有递归性质记录的数据,最常见的是某个机构部门节点的数据,某个节点一定会有个父节点属性,同时它也许会有若干子节点。所有的节点数据都会存在数据库中一张表中。这种现象在设计模式上叫Composite模式。下面我就给出一个用hibernate操作这种表的例子,关于hibernate配置和建立表结构的部分请参考我的前一篇文章《利用weblogic的数据源作为hibernate的数据源的例子》1.持久化类Node.javapackage com.jagie.business.organization;/** * <p>Title: </p> * <p>Description: 部门节点</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: www.jagie.com</p> * @author Jagie * @version 1.0 */public class Node { private String ID;//pk private String name;//名称 private String description;//描述 private Node parent;//上级部门 private java.util.Set children;//下级部门 public static void main(String[] args) { } public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Node getParent() { return parent; } public void setParent(Node parent) { this.parent = parent; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String toString(){ return name; } public java.util.Set getChildren() { return children; } public void setChildren(java.util.Set children) { this.children = children; }}2.映射文件Node.hbm.xml<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><hibernate-mapping> <class name="com.jagie.business.organization.Node" table="SYS_Node"> <id name="ID"> <generator class="uuid.hex" /> </id> <property name="name" /> <property name="description" /> <set cascade="save-update" inverse="true" lazy="true" name="children"> <key column="parent" /> <one-to-many class="com.jagie.business.organization.Node" /> </set> <many-to-one cascade="none" class="com.jagie.business.organization.Node" column="parent" name="parent" /> </class></hibernate-mapping>3.用SchemaExport创建数据库(略)4.测试的代码片断//获取net.sf.hibernate.Session和net.sf.hibernate.Transaction; Session s = JDOUtils.getInstance().getSessionFactory().openSession(); Transaction t = s.beginTransaction(); //建立父节点 Node org = new Node(); org.setName("北京总公司"); org.setDescription("这是北京总公司"); //建立子节点 Node org2 = new Node(); org2.setName("海淀分公司"); org2.setDescription("这是海淀分公司"); //建立子节点对父节点的引用 org2.setParent(org); //持久化 s.save(org); s.save(org2); t.commit(); s.close();代码运行后,我们观察数据库,发现已经生成表SYS_Node,其结构为id varchar2(255)name varchar2(255) ydescription varchar2(255) yparent varchar2(255) y其中y的意思为nullable(可空),同时把我们的节点数据正确的插入了。你可以自己再用session.find()方法来找出某父节点下面的所有子节点了。最后,希望这篇短文对你有用。
(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
Hibernate Iterator JCS分析
Hibernate入门 - Transaction
Hibernate入门 - 包作用详解
Hibernate入门 - 基础配置
使用JDBC和Hibernate来写入Blob型数据到Oracle中
Hibernate O/R映射三大基本定则
 
最近评论:
        
鍥炲
        
那个雨天的想法!
wow gold,wow power leveling.wow power leveling,wow power leveling, max(9436)
        
如果真的有来生!
四川旅游,九寨沟旅游,稻城亚丁旅游,四姑娘山旅游,海螺沟旅游,西藏旅游, max(7893)
        
左边的风景!
wow gold,wow power leveling.wow power leveling,wow power leveling, max(760)
        
轻轻走过你的窗前!
world of warcraft gold,cheap world of warcraft gold,warcraft gold,world of warcraft gold,cheap world of warcraft gold,warcraft gold, max(7495)
        
轻轻走过你的窗前!
world of warcraft gold,cheap world of warcraft gold,warcraft gold,world of warcraft gold,cheap world of warcraft gold,warcraft gold max(1880)
        
昨夜的狂想曲!
wow gold,WoW Gold,world of warcraft gold,WoW Gold, max(1327)
        
没有情人的情人节!
wow gold,wow power leveling.wow power leveling,wow power leveling, max(7665)
        
没有情人的情人节!
wow gold,wow power leveling.wow power leveling,wow power leveling, max(7082)
        
回复:用hibernate对递归数据的操作
看護師求人 薬剤師求人 seo seo対策 展览公司 展览公司 北京展览公司 展览展示 展台设计 展台设计 展览展示 猎头 猎头 crm saas 激光打标机 激光加工 激光打标 激光打码机 北京激光加工 激光打标机 激光加工 激光打码机 噪音治理 噪声治理 隔音屏 隔声屏 激光快速成型机 铸造模拟软件
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号