hibernate生成树
来源:互联网 发布:淘宝比基尼买家秀 编辑:程序博客网 时间:2024/06/06 20:36
- package com.bjsxt.hibernate;
- import java.util.Set;
- public class Node {
- // 标识符
- private int id;
- // 节点名称
- private String name;
- // 层次
- private int level;
- // 是否叶子节点
- private boolean leaf;
- // 父节点 * --- 1
- private Node parent;
- // 子节点 1 --- *
- private Set children;
- public Set getChildren() {
- return children;
- }
- public void setChildren(Set children) {
- this.children = children;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public boolean isLeaf() {
- return leaf;
- }
- public void setLeaf(boolean leaf) {
- this.leaf = leaf;
- }
- public int getLevel() {
- return level;
- }
- public void setLevel(int level) {
- this.level = level;
- }
- 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;
- }
- }
- <?xml version="1.0" ?>
- <!DOCTYPE hibernate-mapping (View Source for full doctype...)>
- - <hibernate-mapping default-cascade="none" default-access="property" default-lazy="true" auto-import="true">
- - <class name="com.bjsxt.hibernate.Node" table="t_node" mutable="true" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" select-before-update="false" optimistic-lock="version">
- - <id name="id">
- <generator class="native" />
- </id>
- <property name="name" unique="false" optimistic-lock="true" lazy="false" generated="never" />
- <property name="level" unique="false" optimistic-lock="true" lazy="false" generated="never" />
- <property name="leaf" unique="false" optimistic-lock="true" lazy="false" generated="never" />
- <many-to-one name="parent" column="pid" unique="false" update="true" insert="true" optimistic-lock="true" not-found="exception" embed-xml="true" />
- - <set name="children" lazy="extra" inverse="true" sort="unsorted" mutable="true" optimistic-lock="true" embed-xml="true">
- <key column="pid" on-delete="noaction" />
- <one-to-many class="com.bjsxt.hibernate.Node" not-found="exception" embed-xml="true" />
- </set>
- </class>
- </hibernate-mapping>
- package com.bjsxt.hibernate;
- import java.io.File;
- import java.util.Iterator;
- import java.util.Set;
- import org.hibernate.Session;
- public class NodeManager {
- private static NodeManager nodeManager;
- private NodeManager() {
- }
- public static synchronized NodeManager getInstance() {
- if (nodeManager == null) {
- nodeManager = new NodeManager();
- }
- return nodeManager;
- }
- // 创建树型结构
- public void createTree(String dir) {
- Session session = HibernateUtils.getSession();
- try {
- session.beginTransaction();
- File root = new File(dir);
- saveTree(root, session, null, 0);
- session.getTransaction().commit();
- } catch (RuntimeException e) {
- e.printStackTrace();
- session.getTransaction().rollback();
- } finally {
- HibernateUtils.closeSession(session);
- }
- }
- // 递归创建一棵树
- private void saveTree(File file, Session session, Node parent, int level) {
- if (file == null || !file.exists()) {
- return;
- }
- boolean isLeaf = file.isFile();
- Node node = new Node();
- node.setName(file.getName());
- node.setLevel(level);
- node.setParent(parent);
- node.setLeaf(isLeaf);
- session.save(node);
- File[] subs = file.listFiles();
- if (subs != null && subs.length > 0) {
- for (int i = 0; i < subs.length; i++) {
- saveTree(subs[i], session, node, level + 1);
- }
- }
- }
- public void printTree(int id) {
- Session session = HibernateUtils.getSession();
- try {
- session.beginTransaction();
- Node root = (Node) session.load(Node.class, id);
- printNode(root);
- session.getTransaction().commit();
- } catch (RuntimeException e) {
- e.printStackTrace();
- session.getTransaction().rollback();
- } finally {
- HibernateUtils.closeSession(session);
- }
- }
- private void printNode(Node node) {
- if (node == null) {
- return;
- }
- int level = node.getLevel();
- if (level > 0) {
- for (int i = 0; i < level; i++) {
- System.out.print(" |");
- }
- System.out.print("--");
- }
- System.out.println(node.getName()
- + (node.isLeaf() ? "" : "[" + node.getChildren().size() + "]"));
- Set children = node.getChildren();
- for (Iterator iter = children.iterator(); iter.hasNext();) {
- Node child = (Node) iter.next();
- printNode(child);
- }
- }
- }
- hibernate生成树
- Hibernate标识生成策略
- Hibernate主键生成方式
- Hibernate自动生成表
- 浅谈Hibernate实体生成
- Hibernate 主键生成方式
- Hibernate标识生成策略
- myeclipse 生成 hibernate配置文件
- Hibernate代码生成模板
- hibernate主键生成策略
- hibernate主键生成方式
- Hibernate主键生成方式
- Hibernate 主键生成方式
- Hibernate 主键生成方式
- Hibernate主键生成方式
- hibernate 配置文件生成数据库
- Hibernate 主键生成方式
- hibernate 标识符生成策略
- 查找解决sql server 死锁现象
- 送给1985年左右的朋友,看完是不是有些泪水
- 媒体计算作业小结
- 使用On Error Resume Next语句,On Error Goto 0语句,Err对象来处理"运行时错误"
- J2me 网络问题 汇总
- hibernate生成树
- 使用 jQuery 简化 Ajax 开发
- 中国文字的魅力
- UNIX 文件系统基本操作
- UVa Problem Solution: 10202 - Pairsumonious Numbers
- xmlDocument是什么?(转)
- 颜色的十六进制编码
- 今天碰到的两个oracle错误
- 国外空间Microsoft JET Database Engine error '80004005' 错误解决办法