java EE中使用PO和VO的注意事项
1、基本定义
PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外,就只有其对应的set/get方法,
而且其变量一般跟数据库表中的列几乎(除了名字)一样。
VO(Value Object 值对象)除了可以跟PO完全一样的变量,set/get方法之外,还可以有其他的变量,但是不用其跟数据库打交道,可以把该对象当做无状态的对象。
2、为什么要使用VO,而不直接都用PO代替?
首先PO是持久化类,其属性的改变很有可能直接导致数据库中的数据变化,而不知道原因(为什么我的数据库中的数据变化了?)。引入了VO之后可以很好
的解决类似的问题,甚至会很好的帮你解决页面(JSP,freemarker,asp,aspx)和控制层的直接便利的交互,而不用担心其各种属性的变化会不会导致数据库中
数据的变化,这对于使用hibernate之后控制其操作数据时出现的持久化、瞬态、脱管都是有很大好处的。
3、使用VO之后应该注意的问题
使用VO之后要注意其活动范围要控制在service层、controller层、展现层中,而不要进入dao层甚至是数据库(一般也不可能影响到数据库),同样的PO也
只能出现在dao层和数据库(数据库直接和PO交互),而不能够出现在service层、controller层、展现层中。
所以,PO和VO都会出现在service层,而且也会在service中进行适当转换。
java EE中使用PO和VO的注意事项的更多相关文章
- Java EE中的容器和注入分析,历史与未来
Java EE中的容器和注入分析,历史与未来 java中的容器 java中的注入 容器和注入的历史和展望 一.java中的容器 java EE中的注入,使我们定义的对象能够获取对资源和其他依赖项的引用 ...
- java ee 中 Jsp 页面的定时的跳转(数字倒数)
java ee 中 Jsp 页面的定时的跳转,实现数字倒计时跳转固定页面 1,Servlet类 RefreshServlet类实现 package org.servlet; import java. ...
- java EE技术体系——CLF平台API开发注意事项(2)——后端测试
前言:上篇博客说到了关于开发中的一些情况,这篇博客主要说明一些关于测试的内容. 一.宏观说明 要求:每一个API都必须经过测试. 备注:如果涉及到服务间调用(如权限和基础数据),而对方服务不可用时 ...
- java中的PO,VO,TO,BO,DAO,POJO的解释
java的(PO,VO,TO,BO,DAO,POJO)解释 O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...
- 用一天的时间学习Java EE中的SSH框架
首先说明一下,本人目前主要从事.NET领域的工作,但对于C++.Java.OC等语言也略知一二,周末闲来无事,特花费一天的时间学习了一下Java中的SSH框架,希望把学习过程中的心得体会与园友们进行分 ...
- java EE中的hello1.java及Annotation(注解)
一.Annotation(注解) 注解(Annotation)很重要,未来的开发模式都需要注解,注解是java.lang.annotation包,Annotation是从java5引入的,它提供一些不 ...
- java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明
文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...
- java EE技术体系——CLF平台API开发注意事项(1)——后端开发
前言:这是一篇帮助小伙伴在本次项目中快速进入到java EE开发的一些说明,为了让同组小伙伴们开发的时候,有个清晰点的思路.昨天给大家演示分享了基本概况,但没有留下文字总结说明,预防后期有人再次问我, ...
- Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数 ...
随机推荐
- phpstorm使用手册
参考:http://www.cnblogs.com/luojianqun/p/4596052.html 罗总说这是php最好的IDE,phpstorm9.02,没有之一.各种功能各种好,罗总此等大神说 ...
- ZOJ 2048 highways
题目 比我想象地要容易很多..一开始想得太复杂了,本来想试一下kruskal算法的,嫌麻烦..还是用了之前1203的prim算法...以为要注意这道题的输出顺序,结果不用,直接输出就可以了,就是注意一 ...
- 关于头文件的一些常用<meta>
一.常见的<meta>(摘自百度) 1. 设置编码信息<meta http-equiv="Content-Type" Content="text/htm ...
- gulp入门教程
第1步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 nodejs.org,下载完成后直接运行程序,就一切准备就绪.npm会随着安装包一起安装,稍后会用到它. 为了确保Nod ...
- sql server 维护计划与作业关系区别
sql server 维护计划与作业关系区别 对于二者的区别,你可以把维护计划看作是针对数据库进行维护的作业模板.自定义作业具有更广泛的用途,当然,也具有更复杂的操作.所以,如果 仅仅是做个数据库优化 ...
- 如何让一个json文件显示在表格里
<body> //首先得把架子搭起来 <table id = "tb" border="1"> <tr></tr> ...
- YY前端课程-自习
1. 默认的浏览器字体 100% = 1em =1rem =16px =12pt em继承父元素,rem只继承html根元素 2. text-align水平对齐影响一个元素中文本的水平对齐方式,控 ...
- Javascript学习笔记2.2 Javascript与DOM选项卡(滑动门)案例详解
学习了DOM的知识,今天开始做些练习,想到了一个网页滑动门的特效,见下图: 1.通过建立索引实现 <!doctype html> <html> <head> < ...
- ThinkPHP 3.2.3(四)架构之多层MVC
一.模型(Model)层 1.ThinkPHP支持多层Model,不同的模型层都继承自系统的Model类. 2.模型的多层通过目录结构和命名规范区分. 例如:在某个项目设计中需要区分数据层.逻辑层 ...
- python【5】-生成式,生成器
一.条件和循环 1. if语句 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> else: <执行4> 例如: ...