2015-05-29 35 views
0
public class Tree<I, A> { 
    private final HashMap<I, Node<I, A>> map = new HashMap<>(); 
    private final Node<I, A> root; 

    public Tree(I id, A value) { 
     root = new Node<>(id, value); 
     map.put(id, root); 
    } 

    public void addChild(I parentId, I id, A value) { 
     Node<I, A> parent = map.get(parentId); 
     Node<I, A> child = new Node<>(id, value); 
     parent.children.add(child); 
     map.put(id, child); 
    } 

    public A getById(I id) { 
     return map.get(id).value; 
    } 

    public String subtreeToString(I id) { 
     return map.get(id).toString(); 
    } 

    private static class Node<I, A> { 
     private final I id; 
     private final A value; 
     private final ArrayList<Node<I, A>> children = new ArrayList<>(); 

     private Node(I id, A value) { 
      this.id = id; 
      this.value = value; 
     } 

     private void print(int depth, PrintWriter pw) { 
      for (int i = 0; i < depth; i++) { 
       pw.print("\t"); 
      } 
      pw.println("[" + id + ", " + value + "]"); 
      for (Node<I, A> child : children) { 
       child.print(depth + 1, pw); 
      } 
     } 

     @Override 
     public String toString() { 
      StringWriter writer = new StringWriter(); 
      print(0, new PrintWriter(writer)); 
      return writer.toString(); 
     } 
    } 
} 

样品输入连接使用Hibernate在Java

Tree<Integer, String> tree = new Tree<>(1, "Bob"); 
tree.addChild(1, 2, "John"); 
tree.addChild(1, 3, "James"); 
tree.addChild(2, 4, "David"); 
tree.addChild(2, 5, "Alice"); 

System.out.println(tree.subtreeToString(1)); 
System.out.println(tree.subtreeToString(2)); 

我的问题,以MySQL数据库是,我要地图上面的代码中使用Hibernate。我只知道基本的休眠和MySQL到MySQL数据库。我该如何做到这一点,以及我必须遵循哪些步骤? 在此先感谢

+1

请阅读hibernate的基础知识atleast,并尝试在这里是链接http://www.mkyong.com/tutorials/hibernate-tutorials/ – Babel

+0

除了基本的MySQL和休眠你需要保存树型数据在mysql..follow [链接](http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/)..我不知道Hibernate如何处理这个内部.. – Ragu

回答

0

您需要一个配置文件在您的src文件夹(如果您使用Netbeans)。

这个文件需要被称为hibernate.cfg.xml,其内容连接到MySQL数据库是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <!-- Conection string for a MySQL DB --> 
     <property name="connection.url">jdbc:mysql://localhost:3306/your_db_name</property> 
     <!-- Your DB username --> 
     <property name="connection.username">db_username</property> 
     <!-- Your password DB username --> 
     <property name="connection.password">password_db_username</property> 
     <!-- Default schema --> 
     <property name="default_schema">public</property> 
     <!-- Hibernate dialect for MySQL DB --> 
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 
     <!-- Shows SQL instructions in shell when you run your program and do any CRUD operation into the DB --> 
     <property name="show_sql">true</property> 
     <!-- Updates DB schema on startup --> 
     <property name="hbm2ddl.auto">update</property> 
    </session-factory> 
</hibernate-configuration> 

不要复制过去和测试,因为它是。您需要更改hibernate.cfg.xml文件中的某些值。

此外,您需要决定是否要使用annotationsmapping files来映射对象。

请参阅Hibernate's Official documentation为我说的话多。