昨天忙着写一整套crud业务代码了,没顾得上debug看公司业务流程
视图
- 建立视图,主键 主表选择,数据库脚本,
表关联,一对一关联 一对多关联。增加字段
- 界面视图,
- 智能搜索app
- 数据库对接 mongdb
开发手册
DO / BO / DTO / VO / AO / PO / UID
DO (Domain Object): 邻域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
BO (business object):业务对象,从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。
DTO (Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
log4jdbc
Spring Data JPA默认采用Hibernate实现。Hibernate的showSql配置只打印SQL,但并不打印SQL参数、执行时间等信息,如果需要这些信息,可以使用第三方工具log4jdbc来完成
JDBC:Java Database Connectivity, 有四种连接的方式
主要用途是与数据库建立连接,发送sql语句,处理结果
可以直接调用sql命令,并与其他的数据库连接API易于使用,低级接口
公司接的大杯咖啡☕️,好评,没糖喝着喝着也习惯了
log4jdbc是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息。log4jdbc使用SLF4J(Simple Logging Facade)作为日志系统。
特性
- 完全支持JDBC3和JDBC4
- 配置简单,一般情况下你只需要将你的DriverClass改为:net.sf.log4jdbc.DriverSpy,并在你的jdbcUrl之前拼接jdbc:log4
- 自动将占位符(?)替换为实际的参数
- 能够及时方便地显示SQL的实际执行时间
- 显示SQL Connection的数量的信息
- 能在JDK1.4+和SLF4J1.X上和大多数常见的JDBC驱动协同工作
- 支持现有大部分JDBC驱动。
- 能够自动把SQL变量值加到SQL输出日志中,改进易读性和方便调试。
- 能够快速标识出应用程序中执行比较慢的SQL语句。
- 能够生成SQL连接数信息帮助识别连接池/线程问题。
- open source
1 | <dependencies> |
Jpa
jpa拥有哪些注解
1 | 声明类为实体或表,跟数据库是一一映射的,springboot启动的时候会扫描 |
配置
依赖
1 | <dependency> |
配置文件yml
1 | spring: |
Hibernate是一个开放源代码的对象关系映射框架(不需要写SQL),它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,(我的理解是后台对数据进行操作,然后他自动写入数据库,而写入数据库是需要sql语句的,他这边是自动生成的)自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
既然Hibernate是关于Java对象和关系数据库之间的联系的话,也就是我们MVC中的数据持久层->在编写程序中的DAO层…
首先,我们来回顾一下我们在DAO层写程序的历程吧:
- 在DAO层操作XML,将数据封装到XML文件上,读写XML文件数据实现CRUD
- 在DAO层使用原生JDBC连接数据库,实现CRUD
- 嫌弃JDBC的Connection\Statement\ResultSet等对象太繁琐,使用对原生JDBC的封装组件–>DbUtils组件
Controller注解
@RequestMapping注解是用来映射请求的,指明处理器可以处理哪些URL请求,可以用在类和方法上,
并且可以通过@PathVariable注解获取作为方法的参数,也可以上通配符筛选请求地址。
1 |
|
此时请求users方法的URL方法的URL路径就是…/user/users
@PreAuthorize 注解 方法前拦截判断是否有权限
@OrderBy
1 |
|
Transient
@Transient表示该属性并不是一个到数据库表的字段的映射,
指定的这些属性不会被持久化,ORM框架将忽略该属性。
如果一个属性并非数据库表的字段映射。就务必将其标示为@Transient。
否则,ORM框架默认其注解为@Basic