《深入实践Spring Boot》一第3章 Spring Boot界面设计3.1 模型设计

本节书摘来自华章出版社《深入实践Spring Boot》一书中的第3章,第3.1节,作者陈韶健,更多章节内容可以访问“华章计算机”公众号查看。

第3章

Spring Boot界面设计

用Spring Boot框架设计Web显示界面,我们还是使用MVC(Model View Controller,模型-视图-控制器)的概念,将数据管理、事件控制和界面显示进行分层处理,实现多层结构设计。界面设计,即视图的设计,主要是组织和处理显示的内容,界面上的事件响应最终交给了控制器进行处理,由控制器决定是否调用模型进行数据的存取操作,然后再将结果返回给合适的视图显示。
本章的实例工程使用分模块管理,如表3-1所示,即将数据管理独立成为一个工程模块,专门负责数据库管理方面的功能。而界面设计模块主要负责控制器和视图设计方面的功能。
表3-1 实例工程模块列表

3.1 模型设计

数据管理模块实现了MVC中模型的设计,主要负责实体建模和数据库持久化等方面的功能。在本章的实例中,将使用上一章的Neo4j数据库的例子,对电影数据进行管理。回顾一下,有两个节点实体(电影和演员)和一个关系实体(角色)。其中,关系实体体现了节点实体之间的关系,即一个演员在一部电影中扮演一个角色。实体建模和持久化与上一章的实现差不多。只不过为了适应本章的内容,电影节点实体和角色关系实体的建模在属性上做了些许调整。另外针对Neo4j数据库的分页查询也做了一些调整和优化。

3.1.1 节点实体建模

如代码清单3-1所示,在电影节点实体建模中做了一些调整,即增加一个photo属性,用来存放电影剧照,并将关系类型更改为“扮演”。需要注意的是,Neo4j还没有日期格式的数据类型,所以在读取日期类型的数据时,使用注解@DateTimeFormat进行格式转换,而在保存时,使用注解@DateLong将它转换成Long类型的数据进行存储。
代码清单3-1 电影节点实体建模

@JsonIdentityInfo(generator=JSOGGenerator.class)
@NodeEntity
public class Movie {
    @GraphId
    Long id;
    private String name;
    private String photo;
    @DateLong
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;

@Relationship(type="扮演", direction = Relationship.INCOMING)
List<Role> roles = new ArrayList<>();

public Role addRole(Actor actor, String name){
    Role role = new Role(actor,this,name);
    this.roles.add(role);
    return role;
}

public Movie() { }
......

}

3.1.2 关系实体建模

电影实体对应的角色关系实体建模的关系类型也同样做了调整而改为“扮演”,如代码清单3-2所示。
代码清单3-2 角色关系实体建模

@JsonIdentityInfo(generator=JSOGGenerator.class)
@RelationshipEntity(type = "扮演")
public class Role {
    @GraphId
    Long id;
    String name;
    @StartNode
    Actor actor;
    @EndNode
    Movie movie;

public Role() {

3.1.3 分页查询设计

对于新型的Neo4j数据库来说,由于它的资源库遵循了JPA的规范标准来设计,在分页查询方面有的地方还不是很完善,所以在分页查询中,设计了一个服务类来处理,如代码清单3-3所示。其中,使用Class传入调用的实体对象,使用Pageable传入页数设定和排序字段设定的参数,使用Filters传入查询的一些节点属性设定的参数。
代码清单3-3 Neo4j分页查询服务类

@Service
public class PagesService<T> {
    @Autowired
    private Session session;

public Page<T> findAll(Class<T> clazz, Pageable pageable, Filters filters){
    Collection data = this.session.loadAll(clazz, filters, convert
(pageable.getSort()), new Pagination
(pageable.getPageNumber(), pageable.getPageSize()), 1);
        return updatePage(pageable, new ArrayList(data));
    }

时间: 2024-12-31 10:41:27

《深入实践Spring Boot》一第3章 Spring Boot界面设计3.1 模型设计的相关文章

《Android App开发入门:使用Android Studio 2.X开发环境》——第 3章 Android App界面设计 3-1 View 与 ViewGroup(Layout):组件与布局

第 3章 Android App界面设计 3-1 View与 ViewGroup(Layout):组件与布局 3-2 使用 LinearLayout建立界面布局 3-3 使用 weight属性控制组件的宽 /高 3-4 通过属性美化外观 3-5 用程序设置组件的外观属性 3-6 使用 ConstraintLayout 提升设计与执行的性能 3-7 使用 Gmail 将程序寄 3-1 View 与 ViewGroup(Layout):组件与布局

《深入实践Spring Boot》一第1章Spring Boot入门1.1 配置开发环境

第1章 Spring Boot入门 在使用Spring Boot框架进行各种开发体验之前,要先配置好开发环境.首先安装JDK,然后选择一个开发工具,如Eclipse IDE和IntelliJ IDEA(以下简称IDEA)都是不错的选择.对于开发工具的选择,本书极力推荐使用IDEA,因为它为Spring Boot提供了许多更好和更贴切的支持,本书的实例都是使用IDEA创建的.同时,还需要安装Apache Maven和Git客户端.所有这些都准备好之后,我们就能开始使用Spring Boot了. 1

Spring Cloud连载(3)Spring Boot简介与配置

本站小福利 点我获取阿里云优惠券 原文作者:杨大仙的程序空间 3 Spring Boot简介与配置   3.1 Spring Boot         Spring Cloud基于Spring Boot搭建,本小节将对Spring Boot作一个大致的讲解,读者知道Spring Boot作用即可. 3.1.1 Spring Boot简介         开发一个全新的项目,需要先进行开发环境的搭建,例如要确定技术框架以及版本,还要考虑各个框架之间的版本兼容问题,完成这些繁琐的工作后,还要对新项目

Spring Boot集成持久化Quartz定时任务管理和界面展示

前言 本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot. 本工程所用到的技术或工具有: Spring Boot Mybatis Quartz PageHelper VueJS ElementUI MySql数据库 正文 配置 本例中仍然是使用mysql数据库作为Quartz任务持久化的存储载体.对于如何在Mysql数据库中建立表,在上一篇Spring+SpringMVC+m

Spring Boot 项目构建 之 使用 Spring Boot 构建应用(Building an Application with Spring Boot)

Table of contents What you'll build What you'll need How to complete this guide Build with Gradle Build with Maven Build with Spring Tool Suite Learn what you can do with Spring Boot Create a simple web application Create an Application class Run the

《Spring实战(第4版)》——第1章 Spring之旅 1.1简化Java开发

第1部分 Spring的核心 Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于它的两个核心特性,也就是依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP). 作为本书的开始,在第1章"Spring之旅"中,我将快速介绍一下Spring框架,包括Spring DI和AOP的概况,以及它们是如何帮助读者解耦应用组件的. 在第2章"装配Bean"中

《妥协的完美主义:优秀产品经理的实践指南(卷二)》一第1章 App产品设计团队进化史1.1 在没有产品设计团队的软件开发时期

第1章 App产品设计团队进化史 妥协的完美主义:优秀产品经理的实践指南(卷二) 在App的开发过程中,常常有两股主要矛盾力量:开发人员和市场人员. 尽管市场人员精通市场.定价,善于掌握商机,但他们对产品设计和过程的要求,只局限在需求列表.需求清单上,列出他们所需功能,这些需求同用户的实际需要和期望有一定差距,主要在于如何超越竞争对手,如何赚取更多的利润,这些需求的来源基于市场调研和对用户心理的猜测: "市场数据的表现是这样的,用户可能是因为某某原因不喜欢使用我们的产品." "

深入实践Spring Boot1.2.2 使用Spring Initializr新建项目

1.2.2 使用Spring Initializr新建项目 新建一个Spring Boot项目,也可以使用Spring Initializr的方式,这种方式很简单,如图1-10所示.注意Initializr Service URL为https://start.spring.io,这将会连接网络,以查询Spring Boot的当前可用版本和组件列表.使用这种方式新建项目大体上也需要三个步骤. 1.?选择类型 可以使用默认选项,注意Type为Maven Project,Java Version为1.

第 11 章 Spring Cloud

11.1. Spring Cloud Config 11.1.1. Git 仓库 克隆仓库 git clone https://github.com/netkiller/config.git 创建配置文件 server-development.properties vim server-development.properties test.a=KKOOKK message=Hello world 提交配置文件 git commit -a git push 配置文件格式 /{applicatio