开发环境的塔建我就不多说了,具体可以参考我以前的几篇日志。

在Eclipse中新建一个动态Web工程,将Struts 、Spring、Hibernate需要的jar都添加到WEB-INF/lib目录下,

将Struts标签所需的tld文件、struts-config.xml文件(可以由StrutsIDE生成)添加到WEB-INF下,另外在

此目录下添加一个Spring的配置文件applicationContext.xml。

我参考的例子是夏昕的《深入浅出Hibernate》上的第6章,很好的一个论坛示例。

首先按照书上的ER模型,在数据库(MySQL)中建立相应的数据库。

create database forum;

use forum;

create table user(

id int not null auto_increment primary key,

name varchar(50),

pwd varchar(50),

email varchar(50)

)type=innodb;

create table board(

id int not null auto_increment primary key,

parent_id int,

create_by int not null,

name varchar(50) not null,

remark varchar(255),

create_time datetime,

index(parent_id),

index(create_by),

foreign key(parent_id) references board(id) on delete cascade,

foreign key(create_by) references user(id) on delete no action

)type=innodb;

create table article(

id int not null auto_increment primary key,

parent_id int ,

board_id int not null,

article_type int not null,

title varchar(255),

body text,

create_by int not null,

create_time datetime,

hits int unsigned,

bytes int unsigned,

last_update_by int not null,

last_update_time datetime,

index(parent_id),

index(board_id),

index(create_by),

index(last_update_by),

foreign key(parent_id) references article(id) on delete no action,

foreign key(board_id) references board(id) on delete cascade,

foreign key(create_by) references user(id) on delete no action,

foreign key(last_update_by) references user(id) on delete no action

)type=innodb;

之后,我选择了用Hibernate Sychonizer来生成映射文件和实体类,然后对生成的类进行修改(删掉了生成的Base类),

实际上Hibernate Sychonizer生成的映射文件也有错误,需要修改,我也是后来在使用中发现的。

//User.hbm.xml

/p>

"-//Hibernate/Hibernate Mapping DTD//EN"

"

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

" >

name="User"

table="user"

>

name="Id"

type="integer"

column="id"

>

name="Name"

column="name"

type="string"

not-null="false"

length="50"

/>

name="Pwd"

column="pwd"

type="string"

not-null="false"

length="50"

/>

name="Email"

column="email"

type="string"

not-null="false"

length="50"

/>

【这里的create_by是后来修改的,Hibernate Sychonizer生成的有错,后面有几处同样的错误】

【这里的create_by是后来修改的】

//User.java

package com.lzy.forum.domain;

public class User{

private static final long serialVersionUID = 1L;

//  primary key

private java.lang.Integer id;

// fields

private java.lang.String name;

private java.lang.String pwd;

private java.lang.String email;

// collections

private java.util.Set articlesByLastUpdateBy;

private java.util.Set articlesByCreateBy;

private java.util.Set boards;

public java.util.Set getArticlesByCreateBy() {

return articlesByCreateBy;

}

public void setArticlesByCreateBy(java.util.Set articlesByCreateBy) {

this.articlesByCreateBy = articlesByCreateBy;

}

public java.util.Set getArticlesByLastUpdateBy() {

return articlesByLastUpdateBy;

}

public void setArticlesByLastUpdateBy(

java.util.Set articlesByLastUpdateBy) {

this.articlesByLastUpdateBy = articlesByLastUpdateBy;

}

public java.util.Set getBoards() {

return boards;

}

public void setBoards(java.util.Set boards) {

this.boards = boards;

}

public java.lang.String getEmail() {

return email;

}

public void setEmail(java.lang.String email) {

this.email = email;

}

public java.lang.Integer getId() {

return id;

}

public void setId(java.lang.Integer id) {

this.id = id;

}

public java.lang.String getName() {

return name;

}

public void setName(java.lang.String name) {

this.name = name;

}

public java.lang.String getPwd() {

return pwd;

}

public void setPwd(java.lang.String pwd) {

this.pwd = pwd;

}

}

//Board.hbm.xml

/p>

"-//Hibernate/Hibernate Mapping DTD//EN"

"

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

" >

name="Board"

table="board"

>

false

name="Id"

type="integer"

column="id"

>

name="Name"

column="name"

type="string"

not-null="true"

length="50"

/>

name="Remark"

column="remark"

type="string"

not-null="false"

length="255"

/>

name="CreateTime"

column="create_time"

type="timestamp"

not-null="false"

length="19"

/>

name="CreateBy"

column="create_by"

class="User"

not-null="true"

>

name="Parent"

column="parent_id"

class="Board"

not-null="false"

lazy="false">

【这里的board_id是后来修改的】

【这里的parent_id是后来修改的】

//Board.java

package com.lzy.forum.domain;

public class Board  {

private static final long serialVersionUID = 1L;

//  primary key

private java.lang.Integer id;

// fields

private java.lang.String name;

private java.lang.String remark;

private java.util.Date createTime;

// many to one

private com.lzy.forum.domain.User createBy;

private com.lzy.forum.domain.Board parent;

// collections

private java.util.Set articles;

private java.util.Set childBoards;

public java.util.Set getArticles() {

return articles;

}

public void setArticles(java.util.Set articles) {

this.articles = articles;

}

public java.util.Set getChildBoards() {

return childBoards;

}

public void setChildBoards(java.util.Set childBoards) {

this.childBoards = childBoards;

}

public com.lzy.forum.domain.User getCreateBy() {

return createBy;

}

public void setCreateBy(com.lzy.forum.domain.User createBy) {

this.createBy = createBy;

}

public java.util.Date getCreateTime() {

return createTime;

}

public void setCreateTime(java.util.Date createTime) {

this.createTime = createTime;

}

public java.lang.Integer getId() {

return id;

}

public void setId(java.lang.Integer id) {

this.id = id;

}

public java.lang.String getName() {

return name;

}

public void setName(java.lang.String name) {

this.name = name;

}

public com.lzy.forum.domain.Board getParent() {

return parent;

}

public void setParent(com.lzy.forum.domain.Board parent) {

this.parent = parent;

}

public java.lang.String getRemark() {

return remark;

}

public void setRemark(java.lang.String remark) {

this.remark = remark;

}

}

//Article.hbm.xml

/p>

"-//Hibernate/Hibernate Mapping DTD//EN"

"

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

" >

name="Article"

table="article"

>

false

name="Id"

type="integer"

column="id"

>

name="ArticleType"

column="article_type"

type="integer"

not-null="true"

length="11"

/>

name="Title"

column="title"

type="string"

not-null="false"

length="255"

/>

name="Body"

column="body"

type="string"

not-null="false"

/>

name="Hits"

column="hits"

type="integer"

not-null="false"

length="10"

/>

name="Bytes"

column="bytes"

type="integer"

not-null="false"

length="10"

/>

name="CreateTime"

column="create_time"

type="timestamp"

not-null="false"

length="19"

/>

name="LastUpdateTime"

column="last_update_time"

type="timestamp"

not-null="false"

length="19"

/>

name="LastUpdateBy"

column="last_update_by"

class="User"

not-null="true"

>

name="CreateBy"

column="create_by"

class="User"

not-null="true"

>

name="Parent"

column="parent_id"

class="Article"

not-null="false"

>

name="Board"

column="board_id"

class="Board"

not-null="true"

>

【这里的parent_id是后来修改的】

//Article.java

package com.lzy.forum.domain;

import java.util.Date;

public class Article  {

private static final long serialVersionUID = 1L;

// primary key

private java.lang.Integer id;

// fields

private java.lang.Integer articleType;

private java.lang.String title;

private java.lang.String body;

private java.lang.Integer hits;

private java.lang.Integer bytes;

private java.util.Date lastUpdateTime;

private java.util.Date createTime;

// many to one

private com.lzy.forum.domain.User lastUpdateBy;

private com.lzy.forum.domain.User createBy;

private com.lzy.forum.domain.Article parent;

private com.lzy.forum.domain.Board board;

// collections

private java.util.Set articles;

public java.util.Set getArticles() {

return articles;

}

public void setArticles(java.util.Set articles) {

this.articles = articles;

}

public java.lang.Integer getArticleType() {

return articleType;

}

public void setArticleType(java.lang.Integer articleType) {

this.articleType = articleType;

}

public com.lzy.forum.domain.Board getBoard() {

return board;

}

public void setBoard(com.lzy.forum.domain.Board board) {

this.board = board;

}

public java.lang.String getBody() {

return body;

}

public void setBody(java.lang.String body) {

this.body = body;

}

public java.lang.Integer getBytes() {

return bytes;

}

public void setBytes(java.lang.Integer bytes) {

this.bytes = bytes;

}

public com.lzy.forum.domain.User getCreateBy() {

return createBy;

}

public void setCreateBy(com.lzy.forum.domain.User createBy) {

this.createBy = createBy;

}

public java.lang.Integer getHits() {

return hits;

}

public void setHits(java.lang.Integer hits) {

this.hits = hits;

}

public java.lang.Integer getId() {

return id;

}

public void setId(java.lang.Integer id) {

this.id = id;

}

public com.lzy.forum.domain.User getLastUpdateBy() {

return lastUpdateBy;

}

public void setLastUpdateBy(com.lzy.forum.domain.User lastUpdateBy) {

this.lastUpdateBy = lastUpdateBy;

}

public java.util.Date getLastUpdateTime() {

return lastUpdateTime;

}

public void setLastUpdateTime(java.util.Date lastUpdateTime) {

this.lastUpdateTime = lastUpdateTime;

}

public com.lzy.forum.domain.Article getParent() {

return parent;

}

public void setParent(com.lzy.forum.domain.Article parent) {

this.parent = parent;

}

public java.lang.String getTitle() {

return title;

}

public void setTitle(java.lang.String title) {

this.title = title;

}

public java.util.Date getCreateTime(){

return createTime;

}

public void setCreateTime(java.util.Date createTime) {

// TODO Auto-generated method stub

this.createTime = createTime;

}

mysql sycho_2005年12月23日相关推荐

  1. 英语听说计算机考试演练专用,新中考首次英语听说机考12月23日举行,9月28日全体中学生模拟演练!...

    原标题:新中考首次英语听说机考12月23日举行,9月28日全体中学生模拟演练! 2018年本市将实施新的中考改革方案,中考首次将英语口语考试纳入考试内容,英语听力和口语考试与笔试分离,每名考生有两次考 ...

  2. 2017广东全国计算机12月,2018年广东考研时间:2017年12月23日至24日

    2018年考研时间已经公布,出国留学考研网为大家提供2018年广东考研时间:2017年12月23日至24日,更多考研资讯请关注我们网站的更新! 2018年广东考研时间:2017年12月23日至24日 ...

  3. 伊洛纳服务器维护,《伊洛纳》【公告】伊洛纳12月23日正式服版本更新

    ---------更新公告--------- Hello,亲爱的各位冒险家: 我们预计将在2020年12月23日 5:00-2020年12月23日9:00进行停服维护,维护期间将无法登录游戏,请提前做 ...

  4. 湖北省计算机二级报名时间2020年12,2020年3月湖北省计算机等级考试报名_时间:12月10日-12月23日...

    湖北省 计算机等级 导语:2020年3月全国计算机等级考试将于3月28日-30日举行,小编整理了湖北省报名时间,供大家参考,欢迎大家点击查看!更多计算机考试动态|模拟试题|历年真题请关注计算机学习网! ...

  5. 本固枝荣--前端体验大会12月23日深圳场

    12月23日深圳前端体验大会(本固枝荣) 作为一个后台开发,完整地参加一整天的分享会议,收获还是挺多的.就我个人而言,前端开发者的心态要比后台开发更Open.更乐于拥抱新技术.整个大会的开始和结束也回 ...

  6. 12月25日服务器例行维护公告,12月23日服务器例行维护公告

    亲爱的玩家: 青龙乱舞区.大地飞鹰区.血海飘香区.名剑风流区.陌上花开区全部服务器将在12月23日6:00~8:00停机维护更新,维护完成后上述各服务器客户端版本号升级至1.1.27.5.本次维护主要 ...

  7. 魅族android11,Flyme安卓11来了!12月23日开启,魅族17系列独享

    原标题:Flyme安卓11来了!12月23日开启,魅族17系列独享 点击右上角关注我们,每天给您带来最新最潮的科技资讯,让您足不出户也知道科技圈大事! 12月22日,魅族Flyme官方宣布,魅族17系 ...

  8. 冰原服务器维护,12月23日(周四)服务器更新维护公告

    首款纯修真2D回合制游戏<问道>以其精良的画质,丰富的玩法,完善的系统受到了无数玩家的喜爱和支持,为了给玩家提供一个更优良的游戏坏境,<问道>运营团队将于12月23日(周四)对 ...

  9. 2019年12月23日--2019年12月29日(合计38小时,剩9962小时)

    2019年12月23日 1,HLSL精讲,19.3剪裁 2,3d图形数学:2.4及相应代码 3,windows核心编程:6.5.2 4,鬼火引擎,ISceneNode 5,整合gis代码 6,cesi ...

  10. nova 8什么时候可以用鸿蒙,12月23日发布!华为Nova 8会用上有鸿蒙OS系统吗?

    尽管受到芯片禁令限制,但是华为的手机发布计划,似乎并未受到太大影响,前段时间刚刚发布了华为Mate 40系列,近日又宣布将在12月23日发布华为Nova 8.虽然目前华为官微上并没有曝光太多有关这款手 ...

最新文章

  1. 潘建伟团队最新研究成果登上Nature:首次实现1120公里长距离无中继纠缠量子密钥分发...
  2. python僵尸进程和孤儿进程_python中多进程应用及僵尸进程、孤儿进程
  3. MicroProfile OpenAPI上的Swagger UI
  4. TensorFlow 学习(七) — 常用函数 api、tf.nn、tf.keras
  5. 英语四级阅读猜题的技巧
  6. 483. Smallest Good Base
  7. express在本地起一个简单服务器可能会用到的(本文用的uniapp做例子)
  8. Delphi7中idhttp和superobject获取网页中文乱码解决办法
  9. r语言中v1=c(v1i),1 R语言介绍 | R语言教程
  10. 大前研一/聰明人必做的十件事
  11. tensorflow-ckpt2npy
  12. 论文阅读:Action Genome: Actions as Composition of Spatio-temporal Scene Graphs
  13. C++11新特性 - 侯捷
  14. UG三轴产品编程3D图档-刀路图档550例
  15. 差分隐私若干基本知识点介绍(一)
  16. 四川农业大学计算机科学技术专业,四川农业大学计算机系简介
  17. 上面两点下面一个三角形_【知识点】三角形全等的判定+性质+辅助线技巧都在这里了!...
  18. 什么是决策树?(详解)
  19. 软件测试一支笔的用途,面试解答:写出一支笔的20种用途
  20. KVM虚拟机网络配置方式 (Bridge方式 Nat方式)(转载)

热门文章

  1. 使用 artTemplate 渲染数组
  2. Selenium 方法封装 一
  3. Codeforces Beta Round #1 B. Spreadsheets 模拟
  4. WAP网站源代码--WAP新闻(文章)系统调试实战
  5. python dict下标_牛鹭学院:必须掌握的Python数据结构知识
  6. 拓端tecdat|R语言马尔可夫转换模型研究交通伤亡人数事故预测
  7. 拓端tecdat|Python中的Apriori关联算法-市场购物篮分析
  8. html是一种制作万维网页面的标准语言,计算机网络基础练习选择题
  9. 360n7手机断网没信号_你的手机信号为什么总比别人差?原因没那么简单
  10. css基础知识汇总6