hibernate设计一棵普通的树

请设计一个树型结构,完成下列需求:

1、  任意一个节点只能有一个(或0个)父节点

2、  任意一个节点可以包含多个子节点

3、  给定任意一个节点,可以输出这个节点的父节点,以及父节点的父节点,一直到顶级节点,要求输出的时候,从顶级节点开始一直输出到给定的节点为止

要求:给出实体类代码、hibernate映射文件代码以及测试代码: 

 实体类:树节点:Node.java

package com.bjsxt.hibernate;

import java.util.Set;

public class Node {
               private int id;
 
              private String name;
 
              private Node parent;
 
              private Set childrens;

    public int getId() {
                 return id;
             }

 public void setId(int 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 Set getChildrens() {
                 return childrens;
         }

 public void setChildrens(Set childrens) {
                this.childrens = childrens;
            } 
}

hibernate配置文件:Node.hbm.xml:

<?xml version="1.0"?>
<!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.bjsxt.hibernate.Node" table="t_node">
                <id name="id">
                         <generator class="native"/>
                </id>
               <property name="name"/>

<!--下面为父亲节点的映射-->
              <many-to-one name="parent" column="parentid" cascade="all" />

<!--下面为孩子节点的映射--->
           <set name="childrens" cascade="all" table="t_node" order-by="id">
                     <key column="parentid"></key>
                    <one-to-many class="com.bjsxt.hibernate.Node" />
           </set> 
      </class>
</hibernate-mapping>

测试NodeTest.java:

package com.bjsxt.hibernate;

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

import junit.framework.TestCase;

import org.hibernate.Session;


/**
 * 测试hibernate建立的普通树
 * @author Administrator
 *
 */
public class SessionTest extends TestCase {
 /**
  * 向数据库中存入数据
  */
 public void testSave1(){
        Session session = null;
 
  try{
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   Node node1 = new Node();
   node1.setName("根节点");
   
   Node node2 = new Node();
   node2.setName("节点2");
   node2.setParent(node1);
   session.save(node2);
   
   Node node3 = new Node();
   node3.setName("节点3");
   node3.setParent(node1);
   session.save(node3);
   
   Node node4 = new Node();
   node4.setName("节点4");
   node4.setParent(node1);
   session.save(node4);
   
   Node node5 = new Node();
   node5.setName("节点5");
   node5.setParent(node2);
   session.save(node5);
  
   session.getTransaction().commit();
  }catch(Exception e){
           e.printStackTrace();
            session.getTransaction().rollback();
  }finally{
           HibernateUtils.closeSession(session);
  } 
 }
 
 /**
  * 给定任意一个节点,可以输出这个节点的父节点,以及父节点的父节点,
  * 一直到顶级节点,要求输出的时候,
  * 从顶级节点开始一直输出到给定的节点为止
  */
 public void testQuery(){
  Session session = null;
  
  try{
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   Node node = (Node)session.load(Node.class, 5);
   Node parent = node.getParent();
   Set parents = new HashSet();
   while(parent != null){
    parents.add(parent);
    parent = parent.getParent();
   }
   
   for(Iterator iter = parents.iterator();iter.hasNext();){
    Node p1 = (Node)iter.next();
    System.out.println("parent:" + p1.getName());   
   }   
   session.getTransaction().commit();
  }catch(Exception e){
             e.printStackTrace();
            session.getTransaction().rollback();
  }finally{
            HibernateUtils.closeSession(session);
  }
 }
}
其中用到的包装类: HibernateUtils.java

package com.bjsxt.hibernate;

import org.hibernate.Session;
        import org.hibernate.SessionFactory;
        import org.hibernate.cfg.Configuration;

public class HibernateUtils {
               private static SessionFactory factory;
 
               public HibernateUtils(){
  
               }
 
            static{
                     try{
                               Configuration cfg = new Configuration().configure();
                               factory = cfg.buildSessionFactory();
                        }catch(Exception e){
                                e.printStackTrace();
                     }
               }
 
            public static SessionFactory getSessionFactory(){
                        return factory;
            }
 
            public static Session getSession(){
                   return factory.openSession();
             }
 
          public static void closeSession(Session session){
                    if(session != null){
                              if(session.isOpen()){
                                       session.close();
                         }  
                   }
          }
}
导出数据库的工具类:ExportToDB.java

package com.bjsxt.hibernate;

import org.hibernate.cfg.Configuration;
        import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExportToDB {
              public static void main(String[] aegs)throws Exception{
                      //读取配置文件
                      Configuration cfg = new Configuration().configure();
  
                      //创建SchemaExport对象
                     SchemaExport export = new SchemaExport(cfg);
  
                    //创建数据库
                    export.create(true, true);
              }
      }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以的,您需要一个普通的商城页面,要求使用Javaweb开发。Javaweb是一种基于Java语言开发的Web应用程序框架,具有良好的跨平台性和可移植性,非常适合用于开发商城等大型Web应用程序。您可以使用JSP、Servlet、JavaBean等技术来实现您的商城页面。如果您需要更加丰富的功能和更好的用户体验,您还可以考虑使用一些开源的Web框架,比如Spring、Struts等。同时,建议您选择一个优秀的开发工具,比如Eclipse、IntelliJ IDEA等,以提高开发效率。 ### 回答2: 如果您需要一个人普通的商城页面,要求使用Java web技术,我会建议您以下步骤: 首先,确定您的商城网站的功能和需求。例如,您需要提供商品展示、购物车、用户注册登录、订单管理等功能。 接下来,设计和创建数据库。您可以使用MySQL等关系型数据库来存储商品信息、用户信息和订单信息等。 然后,选择一个合适的Java web框架。常用的框架有Spring MVC、Struts2等。根据您的需求,您可以选择适合的框架来开发商城网站。 开始编码。使用Java语言,您可以开发网站的后端逻辑。主要包括处理用户请求、数据库操作等。 然后,设计网站的前端界面。您可以使用HTML、CSS和JavaScript等前端技术来开发商城页面的样式和交互效果。 最后,进行系统测试和调试。确保商城网站的各项功能正常运行。您可以使用Junit等测试工具来进行单元测试和集成测试,以确保网站的稳定性和安全性。 总结起来,开发一个Java web商城页面需要进行需求分析、数据库设计、选择框架、编写后端逻辑、设计前端界面,进行测试和调试等多个步骤。希望这个回答能为您提供一些指导和帮助。 ### 回答3: 如果您需要一个人普通的商城页面,并且希望使用Java Web技术进行开发,可以采取以下步骤: 1. 系统设计:首先,您需要确定商城页面的基本需求和功能。例如,商品展示、用户登录、购物车管理、下单结算、订单管理等。然后,根据这些需求设计网站的数据模型和页面交互流程。 2. 技术选择:对于Java Web开发,您可以选择使用Spring框架、Spring MVC和Hibernate等开发工具。Spring提供了一套完整的开发框架和组件来简化Web应用程序的开发流程。 3. 页面设计:根据需求,设计商城的页面布局和样式。您可以使用HTML、CSS和JavaScript来创建页面的前端部分,并确保页面美观和用户友好。 4. 后端开发:使用Java语言和Spring MVC框架来编写商城的后端逻辑。定义商品、用户、订单等Java类,并编写与数据库交互的代码。您可以选择使用MySQL等关系型数据库来存储商城的相关数据。 5. 安全性考虑:商城页面涉及用户隐私和支付信息,安全性是非常重要的。您可以使用Spring Security来添加身份认证和权限控制功能,以确保只有授权用户才能访问特定功能。 6. 测试和部署:完成开发后,进行测试,确保商城页面的正常运行和功能的正确性。最后,将网站部署到Web服务器上,让用户可以访问和使用。 总之,创建一个人普通的商城页面需要系统设计、技术选择、页面设计、后端开发、安全性考虑、测试和部署等步骤。使用Java Web技术开发商城页面可以利用Spring框架、Spring MVC和Hibernate等工具,从而实现功能完善、安全可靠的商城页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值