Hibernate建模

根据老师给的提纲,将学习资源网暂分成六个大的版块,分别是:本科课程、网络课程、教学课件、教学素材、教学文库、会员中心。所有的课程、课件、文章都按 2004 的国家课程分类大纲进行分类。
 
通过于 老师的沟通,由于现今无法通过网络沟通,所以寒假的工作可以分成两个部分先做。一是做一个完整的会员制;二是做一个完整的后台资源管理系统;三是做一个新闻发布系统。而前台的展示,到学校后再与老师商量。
 
可建立的模型有:用户库及行为模型、新闻发布系统模型、资源发布系统模型。
 
其模型结构如下图:Hibernate建模_第1张图片
数据库说明:
 
# 管理员表 .
# Structure for the `admin` table :
#
 
CREATE TABLE `admin` (
 `Id` int(2) NOT NULL auto_increment COMMENT ' 管理员 Id .',
 `Name` varchar(20) default NULL COMMENT ' 管理员名称 .',
 `Pwd` varchar(65) default NULL COMMENT ' 管理员密码 .',
 `SGrant` int(1) default NULL COMMENT ' 管理员权限 .',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
# 课程资源分类表
# Structure for the `courseid` table :
#
 
CREATE TABLE `courseid` (
 `Id` int(3) NOT NULL auto_increment COMMENT ' 资源归属类别 Id.',
 `Name` varchar(20) default NULL COMMENT ' 归属名称 .',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
 
# 课程资源表 .
# Structure for the `courses` table :
#
 
CREATE TABLE `courses` (
 `Id` int(6) NOT NULL auto_increment COMMENT ' 资源 Id .',
 `Cname1` varchar(20) default NULL COMMENT ' 一级学科名称 .',
 `Cname2` varchar(20) default NULL COMMENT ' 二级学科名称 .',
 `PhotoPath` varchar(255) default NULL COMMENT ' 资源介绍图片 .',
 `School` varchar(50) default NULL COMMENT ' 出自学校 .',
 `Teacher` varchar(12) default NULL COMMENT ' 主讲教师 .',
 `Course` varchar(50) default NULL COMMENT ' 课程名称 .',
 `IURL` varchar(255) default NULL COMMENT 'Internet 网上地址 .',
 `LURL` varchar(255) default NULL COMMENT ' 本地地址 .',
 `Link` varchar(50) default NULL COMMENT ' 所生成的 HTML 文件名称 .',
 `Introduce` text COMMENT ' 介绍 .',
 `RegDate` datetime default NULL COMMENT ' 添加日期时间 .',
 `Click` int(5) default NULL COMMENT ' 点击次数 .',
 `Changed` longblob COMMENT ' 是否已生成 HTML 网页 .',
 `CId` int(3) default NULL COMMENT ' 归属 Id.',
 `AId` int(2) default NULL,
 PRIMARY KEY (`Id`),
 KEY `CId` (`CId`),
 KEY `AId` (`AId`),
 CONSTRAINT `courses_fk` FOREIGN KEY (`CId`) REFERENCES `courseid` (`Id`),
 CONSTRAINT `courses_fk1` FOREIGN KEY (`AId`) REFERENCES `admin` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
# 新闻类别表 .
# Structure for the `newsclass` table :
#
 
CREATE TABLE `newsclass` (
 `Id` int(3) NOT NULL auto_increment COMMENT ' 新闻栏目 ID.',
 `Name` varchar(10) NOT NULL COMMENT ' 新闻栏目名称 .',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
 
# 新闻表 .
# Structure for the `news` table :
#
 
CREATE TABLE `news` (
 `Id` int(8) NOT NULL auto_increment COMMENT ' 新闻 Id .',
 `Author` varchar(24) NOT NULL COMMENT ' 原文作者 .',
 `Source` varchar(20) default NULL COMMENT ' 来源网站 .',
 `SRrl` varchar(255) default NULL COMMENT ' 来源网址 .',
 `NDate` datetime default NULL COMMENT ' 添加时间 .',
 `Words` varchar(60) default NULL COMMENT ' 关键词 .',
 `Content` mediumtext COMMENT ' 内容 .',
 `NewsCId` int(3) default NULL COMMENT ' 外码 NewsClass Id.',
 `AId` int(2) default NULL COMMENT ' 添加文章的作者 .',
 PRIMARY KEY (`Id`),
 KEY `NewsCId` (`NewsCId`),
 KEY `AId` (`AId`),
 CONSTRAINT `news_fk` FOREIGN KEY (`NewsCId`) REFERENCES `newsclass` (`Id`),
 CONSTRAINT `news_fk1` FOREIGN KEY (`AId`) REFERENCES `admin` (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
 
# 会员表 .
# Structure for the `username` table :
#
 
CREATE TABLE `username` (
 `Id` int(6) NOT NULL auto_increment COMMENT ' 用户 Id.',
 `Name` varchar(24) default NULL COMMENT ' 用户昵称 .',
 `Pwd` varchar(65) default NULL COMMENT 'MD5 加密密文 .',
 `RealName` varchar(12) default NULL COMMENT ' 用户真实姓名 .',
 `Province` varchar(3) default NULL COMMENT ' 省份 .',
 `City` varchar(16) default NULL COMMENT ' 城市 .',
 `Addr` varchar(24) default NULL COMMENT ' 通讯地址 .',
 `Zip` varchar(6) default NULL COMMENT ' 邮政编码 .',
 `Phone` varchar(12) default NULL COMMENT ' 固定电话号码 .',
 `Tel` varchar(12) default NULL COMMENT ' 手机号码 .',
 `Email` varchar(24) default NULL COMMENT ' 电子邮箱 .',
 `Temp` longblob COMMENT ' 是否是临时用户 .',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
通过Hibernate映射,请注意:AdminàNewsAdminàCourses的关联操作.当删除Admin中的一条记录时,将会导致对NewsCourse 中字段 Aid的修改.
 
2006 1 16                                   星期一                                8 58 7
 
      //Hibernate处理数据库几个步聚.
      // 第一步:创建 session.
// 第二步:创建事务处理 transcation.
      // 第三步:操作 session.
      // 第四步:处理事务.
      // 第五步:关闭 session.
      Session session=HibernateSessionFactory.currentSession();
      Transaction tran=session.beginTransaction();
      Username ws=new Username();
      ws.setName("唯思");
      session.save(ws);
      session.flush();
      tran.commit();
      session.close();
 
利用 Hibernate 定义的通用数据库访问类.此类为持久类 .
package wills.sql;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import wills.beans.HibernateSessionFactory;
public class SQL_Comm {
      Session session;
      Transaction tran;
      public void Begin() {
           session = HibernateSessionFactory.currentSession();
           tran = session.beginTransaction();
      }
// 在数据库中插入一条记录 .ws 为插入的记录 .
      public void Insert(Object ws) {
           Begin();
           session.save(ws);
           End();
      }
// 在数据库中删除一条记录 . ws 为对象对象副本 .
      public void Delete(Object ws) {
                 Begin();
                 session.delete(ws);
                 End();
      }
// 在数据库中搜入一个对象 . Hibernaet 将自动寻找相匹配的数据库 .
      public void Update(Object ws) {
           Begin();
           session.update(ws);
           End();
      }
// 执行 Update 或是 Delete SQL 语句 .
      public int UpdateAndDelete(String sql) {
           Begin();
           Query query = session.createQuery(sql);
           int ret = query.executeUpdate();
           End();
           return ret;
      }
// 执行 Select 查询语句
      public List Select(String sql) {
           Begin();
           List list = session.createQuery(sql).list();
           End();
           return list;
      }
// 对数据库事务直接进行递交 .
      public void End() {
           try {
                 session.flush();
                 tran.commit();
                 System.out.print(" 事务成功递交 !\n");
           } catch (Exception e) {
// 如果递交出错 , 则显示出错信息 .
                 System.out
                            .print(" 操作 MySQL 出错 !\n 请验证是否出现如下错误 :\n \t1. 插入、更新的对象中是否有不允许的空值! \n\t2. 插入、更新的对象中值的相关性是否正确! \n\t3.Select 语句的条件是否正确! \n");
                 System.out.print(" 系统出错信息是: " + e.toString() + "\n");
           }
           HibernateSessionFactory.closeSession();
      }
}

你可能感兴趣的:(Hibernate,数据库,session,table,null,structure)