您的位置:首页 > 其它

个人博客开发日记04

2020-04-27 07:25 309 查看

设计与规范

实体设计

实体类

  • 博客 Blog:
    分类、标签、评论、用户、标题、内容、首图、标记、浏览次数、赞赏开启、评论开启、版权开启、发布状态、是否推荐、创建时间、更新时间
  • 博客分类 Type:
    名称
  • 博客标签 Tag
    名称
  • 博客评论 Comment
    昵称、邮箱、头像、评论内容、创建时间、评论对象
  • 用户 User
    昵称、用户名、密码、邮箱、类型、头像、创建时间、更新时间

应用分层

  • 终端显示层
  • 请求处理层(Web层)
  • 业务逻辑层(Service层)
  • 持久层(Dao层)
  • 数据源(MySQL)

命名约定

Service/Dao层方法命名约定

  • 获取单个对象:getXXX()
  • 获取多个对象:listXXX()
  • 获取统计值:countXXX()
  • 插入:saveXXX()或者insertXXX()
  • 删除:removeXXX()
  • 修改:updateXXX()

实体类创建

需要关注主键生成策略和实体类之间的关系,为自动生成数据库表,需要用到JPA的相关注解:

  • @Entity
    指出该Java类为实体类,将映射到指定的数据库表
  • @Table
    当实体类与其映射的数据库表名不同名时,需要使用@Table标注说明
  • @Id
    指定主键
  • @GeneratedValue
    标注主键的生成策略
  • @Temporal
    调整Date精度
  • @ManyToOne
    多对一关系
  • 其他注解

建表

可能会出现建表失败的问题,异常信息如下

GenerationTarget encountered exception accepting command : Error executing DDL "create table hibernate_sequence (next_val bigint) type=MyISAM" via JDBC Statement

主要问题出在 TYPE = MYISAM。MySQL 5.x之后的版本应使用 ENGINE=MyISAM设置存储引擎。
由于使用框架自动进行建表,另寻解决方案,将数据库方言由MySQLDialect改为MySQL5Dialect,重启项目,问题解决。

# 配置数据库方言
spring:
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect

发现多出一张表:hibernate_sequence,用以记录其他表的主键。具体分析见 https://blog.csdn.net/zhangli0910/article/details/83580855

  • 点赞
  • 收藏
  • 分享
  • 文章举报
UndeclaredException 发布了10 篇原创文章 · 获赞 0 · 访问量 233 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: