2015-05-29 60 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爲我說的話多。