Java 中的 domain 、 persistent 、Data Access 用法示例
很多开发者 不遵从开发规范 甚至搞不清楚 各种对象之间关系
- 先说分层
- 领域层 domain DO
- 持久层 persistent PO
- 数据访问 data Access ADO
- 业务层 business BO
- 转换层 transfer TO
- 视图层 view VO
从数据库获取数据
- domain 对应一个实体 只包含属性、行为 、规则 例如 图书
- 该对象是轻量级 类似是贫血模型 不可以参杂业务
public class Book {
private String title;
private String author;
// 其他属性和方法
public Book(String title, String author) {
this.title = title;
this.author = author;
}
// Getters 和 Setters
}
- persistent 领域对象的持久化表示, 持久化对象通常与数据库表对应 例如图书表
- 该对象是轻量级 也就是贫血模型 可以参杂数据库的操作
public class BookEntity {
private long id;
private String title;
private String author;
// 其他属性和方法
// Getters 和 Setters
}
- data Access 提供了对持久化对象的访问方法,封装了底层的数据库操作
public class BookDAO {
public void save(Book book) {
// 将领域对象 Book 转换为持久化对象 BookEntity,并保存到数据库中
BookEntity entity = new BookEntity();
entity.setTitle(book.getTitle());
entity.setAuthor(book.getAuthor());
// 执行数据库保存操作
}
public Book getById(long id) {
// 从数据库中查询指定 ID 的持久化对象 BookEntity,并将其转换为领域对象 Book
BookEntity entity = // 查询数据库获取持久化对象
Book book = new Book(entity.getTitle(), entity.getAuthor());
// 设置其他属性
return book;
}
// 其他数据访问方法,例如更新、删除、查询等
}
讲数据库的数据返回到服务层
- PO-> BO->TO
@Override
public BookTO findBookList(BookTO transfer) {
// po persistent 持久化对象 对应一个数据表
// do domain 领域对象 对应一个实体
// dto data access 持久层访问对象 操作持久层对象
BookDAO bookDAO = new BookDAO();
BookPO bookPo = bookDAO.getBook();
BookInfoPO bookInfo = bookDAO.getBookInfo();
// bo business 业务对象 通常一个业务需要查询多个表 也就是多个po
BookBO business = new BookBO();
business.setBook(bookPo);
business.setBookInfo(bookInfo);
List<BookBO> businesses = new ArrayList<>();
businesses.add(business);
// to transfer对象
transfer.setBookList(businesses);
return transfer;
}
}
服务层到控制器返回到视图层
- TO->VO
public class BookController {
@PostMapping("findBookList")
public AjaxJson findBookList(@RequestBody PageDTO pageDTO) {
// dto data translate 接受外部数据
BookTO param = new BookTO();
param.setPageNum(pageDTO.getPageNum());
param.setPageSize(pageDTO.getPageSize());
param.setUsername(pageDTO.getKeywords());
// to translate 传输对象传入到服务层
BookServiceImpl BookService = new BookServiceImpl();
BookTO transfer = BookService.findBookList(param);
// vo view 传回视图层
BookVO view = new BookVO();
view.setTransfer(transfer);
// 返回的形式
AjaxJson result = new AjaxJson();
result.addJson(view);
return result;
}
}
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/17866870.html