# Spring_SpringMVC_Hibernate博客系统 **Repository Path**: shadow97/spring_springmvc_hibernate_blog_system ## Basic Information - **Project Name**: Spring_SpringMVC_Hibernate博客系统 - **Description**: 使用SpringMVC+Hibernate框架实现的简单博客系统 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-08-10 - **Last Updated**: 2021-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring+SpringMVC+Hibernate博客系统 ## 需求概述 博客系统一般来说专注于表达,例如对特定的新闻或者研究课题的评论,记录个人生活的日记或者专业知识学习笔记。总的来说,一个基本的博客系统主要功能包括内容发布、内容管理、内容浏览、评论(包括评论、回复评论)、个人信息设置等。 - 内容发布:用户登录进系统以后可以发布自己的内容,包括文章、图片等。用户可以对文章进行编辑、排版,插入图片进行图文混排等,完成编辑后点击“发布”按钮即可发布,所有发布的内容将按照时间顺序排列在用户自己的时间轴上。 - 内容管理:用户登入系统后可查看自己发表的内容及其评论,删除自己不想保存的内容,根据需要将某一项或某些项内容置顶以方便经常性地查看。 - 内容浏览:用户可以浏览其他用户发表的内容,系统会为用户生成三个内容列表,包括已关注人最近发表的内容列表、热门内容列表、推荐内容列表,用户可以点击任何一个列表查看并进入自己感兴趣的内容进行阅读。 - 评论管理:用户在阅读他人的内容时,可以对其进行评论,如果觉得内容很好可以点赞,也可以对内容进行转发。同时如果用户自己的内容被别人评论,还可以对评论进行回复实现读者和作者之间的简单交流。 - 个人信息设置:用户对个人信息进行管理,包括用户名、密码、邮箱等信息的维护。 ## 技术框架 根据前面的用例分析,我们采用目前比较经典的三层架构设计。Web层:也可理解为UI层,主要负责展现给客户的界面,用于展示用户输入以及服务端返回的数据;交互式操作界面中,用户输入的数据和想要的数据展示。业务逻辑层:也叫服务层,用户输入的数据通过业务逻辑层的处理发给数据层;数据层返回的数据通过业务逻辑层发送给界面展示。常做的操作是验证、计算、业务规则等。数据访问层:也叫持久化层,主要管理数据,实现对数据的增删改查等操作。把业务逻辑层提交的用户输入的数据保存,把业务逻辑层请求的数据返回给业务逻辑层。 ## 实体类设计 博客管理系统共有6个POJO类 - User类:代表用户信息类,包括用户编号、用户名、密码、邮件、电话、QQ、描述等属性,一个用户可以发布多篇博文和多张图片,因此User类和Article、Picture类形成1对n关系。 - ArticleType类:代表文章类型,包括类型编号和类型名称属性,一个文章主题下面存在多篇文章,ArticleType类和Article类形成1对n关系。 - Article类:代表文章信息,包括文章编号、文章标题、内容、发布时间、博主编号等属性,一篇文章下面可以有多条评论,因此Article类和Reply类形成1对n关系。 - Reply类:代表文章评论,包括评论编号、评论、评论时间、评论人、文章编号等属性。 - Picture类:代表照片墙信息,包括照片编号、照片标题、内容描述、照片路径等属性。 - PageBean类:代表分页基础类,主要用于做用户信息列表、文章列表、图片列表的分页处理,包括当前页、每页行数、总页数、总记录数、分页信息集合等。 ## 持久层设计 持久层采用Hibernate技术,通过面向接口的编程思想,将持久层分为DAO的接口定义层和DAO的实现层。DAO的接口层创建所有DAO的基类BaseDAO,BaseDAO接口定义了常见的数据库操作方法(findAll、findById、update、delete、save、find),子类仅需定义那些个性化的数据操作方法就可以了。BaseDao使用了Java泛型的技术,T为DAO操作的POJO类型,子类在继承BaseDao时仅需要指定T的类型,BaseDao中的方法就可以确定操作的POJO类型了,避免了强制类型转换带来的麻烦。在BaseDao接口的实现类BaseDaoImpl中,直接注入Spring为Hibernate提供的HibernateTemplate模板类,这样我们就可以接由这个HibernateTemplate执行Hibernate的各项操作。在DAO的实现层中,所有DAO的实现类,都必须继承持久层的BaseDaoImpl,通过这种方式将大大减少子DAO类的代码。 ## 服务层设计 服务层通过封装持久层的DAO完成商业逻辑,Web层通过调用服务层的服务类完成各模块的业务。服务层也分为接口层和实现层,接口层提供了五个服务类,分别是UserService、ArticleService、ArticleTypeService、PictureService、ReplyService。服务层的类图如图10.10所示。 ArticleService通过调用持久层的ArticleDao操作持久化对象,它提供了保存、更新、删除、查找等对Article持久类的操作方法,同时它还提供了根据文章ID查询单条文章以及根据博主ID查询多篇文章的方法。 ## 数据库设计 ![SQL](https://gitee.com/uploads/images/2018/0501/150312_223310f3_1820745.png "SQL.png") ## 效果演示 ![博客首页](https://gitee.com/uploads/images/2018/0401/145637_d1d63232_1820745.jpeg "index.jpg") ![文章列表](https://gitee.com/uploads/images/2018/0401/145738_7450543d_1820745.jpeg "article.jpg") ![相册](https://gitee.com/uploads/images/2018/0401/145810_a76a7851_1820745.jpeg "picture.jpg") ![登陆](https://gitee.com/uploads/images/2018/0401/145828_100b5521_1820745.jpeg "login.jpg") ![博客后台](https://gitee.com/uploads/images/2018/0401/145841_2942dee7_1820745.jpeg "admin.jpg") ![文章管理](https://gitee.com/uploads/images/2018/0401/145857_d0a1bdb1_1820745.jpeg "manager.jpg")