学习~!多谢智勇~!
来源:互联网 发布:linux查看编码方式 编辑:程序博客网 时间:2024/06/10 21:01
饶智勇 22:12:19
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/I@3V3BE~96{@`H0[(7HNB[K.jpg)
卜回頭 22:17:05
就单拿一个模块,不考虑与其他模块的交互。如:学生完善个人信息,
卜回頭 22:19:18
我先在Eclipse中建好数据库,然后用hibernate reverse engineering导出映射,
卜回頭 22:20:02
之后该怎么做呢?
饶智勇 22:20:43
==
卜回頭 22:20:46
恩
饶智勇 22:33:00
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/8[$G1QP5`SGQVO4RQ8N`B5A.jpg)
饶智勇 22:34:13
你现在做的是到这里吧
卜回頭 22:34:25
恩
饶智勇 22:34:27
现在你要开始写接口,
饶智勇 22:35:13
很遗憾的是,
这个生成的类我们在开发中很少用到,一般还要自己重写
饶智勇 22:35:41
但是你现在先用这个吧,
卜回頭 22:35:45
为什么的?
饶智勇 22:36:00
没发现里面有很多方法我们用不到?
卜回頭 22:36:18
是很多,,,
饶智勇 22:36:20
而且存在一些性能问题,所以我们都是自己写的
饶智勇 22:37:30
而且如果你用了这个类,你要抽取他的接口的话,是很困难的,而且大多数方法我们用不到
饶智勇 22:39:10
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
饶智勇 22:39:27
然后我们看到这个类,这里我们就要开始用到spring 了
饶智勇 22:40:13
需要他的依赖注入为我们的持久化层和业务逻辑层进行很好的解耦
卜回頭 22:40:16
POJO是那个含有数据库表中对应字段为私有属性,然后有set/get 方法的类吗?
饶智勇 22:40:27
是的
饶智勇 22:40:49
专属名词,这样比较专业
饶智勇 22:40:50
呵呵
饶智勇 22:41:01
就是持久化对象
卜回頭 22:41:32
编写的接口主要是实现哪些功能的?
卜回頭 22:42:27
还是为实现功能提供一个与DAO的链接???
饶智勇 22:44:33
我们所谓的都是面向接口编程
饶智勇 22:45:21
你想要在程序中有多少功能,就定义多少接口,然后实现它
饶智勇 22:45:41
一般不是很多,crud
饶智勇 22:45:56
CRUD,增删改查
卜回頭 22:46:03
明白~!每个接口对应一个具体的功能
饶智勇 22:46:11
加上一些分页
饶智勇 22:46:32
基本的都是这些,然后就要看业务需求了
饶智勇 22:46:47
这块弄懂了没?
卜回頭 22:46:57
嗯嗯~!非常明白了
饶智勇 22:47:13
刚刚说到的spring
卜回頭 22:47:26
=
饶智勇 22:47:28
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
Sunshine 22:39:27
然后我们看到这个类,这里我们就要开始用到spring 了
卜回頭 22:48:37
业务需求,比如在一个学生成绩系统中,计算学生的平均分就是一个业务?对吗???
饶智勇 22:49:17
是的
饶智勇 22:49:28
你反应很快
饶智勇 22:49:49
可以下面的吗?
卜回頭 22:49:52
好的
饶智勇 22:50:24
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
然后我们看到这个类,这里我们就要开始用到spring 了
饶智勇 22:50:43
这一块,也就是你昨天出错的地方
卜回頭 22:51:06
用到的spring是不是,就是处理来自上一层的请求吗?并且做出响应的?
卜回頭 22:52:27
请求-》响应,都是上面我们定义的基本操作的一个实例???是不是的
饶智勇 22:52:35
其实这里面和UserDao中的实现是一样的,只不过是将UserDao进一步封装了,并且通过依赖注入解耦
饶智勇 22:53:34
错误,spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:53:54
请求响应时struts 做的事情
饶智勇 22:54:00
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:01
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:02
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
卜回頭 22:54:02
哦
饶智勇 22:54:03
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:13
这个一定要有深刻的印象
卜回頭 22:54:57
业务逻辑???代表?
饶智勇 22:56:13
由于每个人的开发习惯不同,有的人喜欢由前台到后台,有的人反之,但是我们都建议,后者:持久层->务逻辑层 ->表现层
饶智勇 22:56:26
就是处理业务的
饶智勇 22:57:50
业务,就是business,就是一个单元(个人,组织等)给另一个单元提供的服务。逻辑(logic)就是指人们思考问题,从某些已知条件出发推出合理的结论的规律。所以逻辑不可能离开业务,
饶智勇 22:59:25
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/F2J%NZP]1()[6(G}]HA%HFC.jpg)
卜回頭 23:00:00
业务逻辑方面自己还需要看下资料,,,接着
这里说吧
饶智勇 23:00:39
业务逻辑层
用于做一些有效性验证的工作,以更好的保证程序运行的健壮性。如完成数据添加、修改和查询业务等;不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证;用户权限的合法性判断等;通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。
业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。
业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。
饶智勇 23:00:50
这是网上下的定义
饶智勇 23:00:51
呵呵
饶智勇 23:01:15
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/XI[T79S4DUV9]1R(MVL_MCU.jpg)
饶智勇 23:01:19
这里懂不懂?
卜回頭 23:01:41
意思是依赖前面设计好的接口,
不是很懂
卜回頭 23:02:10
这样说就明白了~!![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/[LC3U)F{0XCAB)LKNIT0K@G.gif)
饶智勇 23:08:17
以前在我们不用spring的时候我们都是这样做的,直接实例化对象的方式注入对象如:
public class A implements UserServiced{
private UserDao userDao = new UserDao();
........
public vid savae(Object obj){
userDao.save(Obj);
}
.....
}
当我们加入spirng 之后我们可以通过spring 的控制反转(IOC)进行注入
public class A implements UserServiced{
@Resource(name="userDao")
private UserDao userDao ;
........
public vid savae(Object obj){
userDao.save(Obj);
}
.....
}
饶智勇 23:08:42
这里就体现了解耦
饶智勇 23:11:10
spring 对业务逻辑没有侵入性,对别人没有依赖,当我们换掉 userDao的时候很轻松,而且不会对这个模块构成威胁报错
第一种就只是依赖UserDao userDao = new UserDao(); new UserDao();
饶智勇 23:11:42
表示下...在不在
卜回頭 23:11:52
恩
饶智勇 23:12:04
我这样说能看懂吗?
卜回頭 23:13:35
这里 private UserDao userDao = new UserDao();
卜回頭 23:14:08
是所谓的构造函数注入吗?
饶智勇 23:16:08
spring 中有3种入方式,set方法、注解、构造器
但是 private UserDao userDao = new UserDao(); 不是spring 的构造器注入方式
卜回頭 23:18:43
这个我明天消化下,
饶智勇 23:18:55
恩,
卜回頭 23:18:57
你要不去休息的?
饶智勇 23:19:27
开发中用的最多的还是set方法
饶智勇 23:19:40
我们明天早起
上课
饶智勇 23:19:45
一天的课
卜回頭 23:19:49
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/MNZG)S@Y~O64{]B~UL$X2KN.gif)
卜回頭 23:20:29
我们改次聊呀!早点休息吧!
卜回頭 23:20:40
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
饶智勇 23:20:44
你消化下啊,不晓得你能不能接受,我可能讲的不是很到位
饶智勇 23:21:09
我还有会,再写点代码
卜回頭 23:21:28
就是最后那里还有点,明天我看下资料,就可以的,前面的都明白了~!!!
饶智勇 23:21:55
那就好
卜回頭 23:22:15
多谢你哦!
饶智勇 23:23:05
不谢
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/I@3V3BE~96{@`H0[(7HNB[K.jpg)
卜回頭 22:17:05
就单拿一个模块,不考虑与其他模块的交互。如:学生完善个人信息,
卜回頭 22:19:18
我先在Eclipse中建好数据库,然后用hibernate reverse engineering导出映射,
卜回頭 22:20:02
之后该怎么做呢?
饶智勇 22:20:43
==
卜回頭 22:20:46
恩
饶智勇 22:33:00
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/8[$G1QP5`SGQVO4RQ8N`B5A.jpg)
饶智勇 22:34:13
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/7{}_U(VP9HVS`~YXQ67BA[K.jpg)
卜回頭 22:34:25
恩
饶智勇 22:34:27
现在你要开始写接口,
饶智勇 22:35:13
很遗憾的是,
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/6EZ{8C{Q1T`V~R09PPJ)0[Y.jpg)
饶智勇 22:35:41
但是你现在先用这个吧,
卜回頭 22:35:45
为什么的?
饶智勇 22:36:00
没发现里面有很多方法我们用不到?
卜回頭 22:36:18
是很多,,,
饶智勇 22:36:20
而且存在一些性能问题,所以我们都是自己写的
饶智勇 22:37:30
而且如果你用了这个类,你要抽取他的接口的话,是很困难的,而且大多数方法我们用不到
饶智勇 22:39:10
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
饶智勇 22:39:27
然后我们看到这个类,这里我们就要开始用到spring 了
饶智勇 22:40:13
需要他的依赖注入为我们的持久化层和业务逻辑层进行很好的解耦
卜回頭 22:40:16
POJO是那个含有数据库表中对应字段为私有属性,然后有set/get 方法的类吗?
饶智勇 22:40:27
是的
饶智勇 22:40:49
专属名词,这样比较专业
饶智勇 22:40:50
呵呵
饶智勇 22:41:01
就是持久化对象
卜回頭 22:41:32
编写的接口主要是实现哪些功能的?
卜回頭 22:42:27
还是为实现功能提供一个与DAO的链接???
饶智勇 22:44:33
我们所谓的都是面向接口编程
饶智勇 22:45:21
你想要在程序中有多少功能,就定义多少接口,然后实现它
饶智勇 22:45:41
一般不是很多,crud
饶智勇 22:45:56
CRUD,增删改查
卜回頭 22:46:03
明白~!每个接口对应一个具体的功能
饶智勇 22:46:11
加上一些分页
饶智勇 22:46:32
基本的都是这些,然后就要看业务需求了
饶智勇 22:46:47
这块弄懂了没?
卜回頭 22:46:57
嗯嗯~!非常明白了
饶智勇 22:47:13
刚刚说到的spring
卜回頭 22:47:26
=
饶智勇 22:47:28
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
Sunshine 22:39:27
然后我们看到这个类,这里我们就要开始用到spring 了
卜回頭 22:48:37
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/2BIV4EJ4}%(FH%$VO1KZBQF.jpg)
饶智勇 22:49:17
是的
饶智勇 22:49:28
你反应很快
饶智勇 22:49:49
可以下面的吗?
卜回頭 22:49:52
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/52W[C~~FFQ[27)18U93ZOWB.gif)
饶智勇 22:50:24
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/X$_[4J8BPUKC1PL}5[8)I)U.jpg)
然后我们看到这个类,这里我们就要开始用到spring 了
饶智勇 22:50:43
这一块,也就是你昨天出错的地方
卜回頭 22:51:06
用到的spring是不是,就是处理来自上一层的请求吗?并且做出响应的?
卜回頭 22:52:27
请求-》响应,都是上面我们定义的基本操作的一个实例???是不是的
饶智勇 22:52:35
其实这里面和UserDao中的实现是一样的,只不过是将UserDao进一步封装了,并且通过依赖注入解耦
饶智勇 22:53:34
错误,spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:53:54
请求响应时struts 做的事情
饶智勇 22:54:00
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:01
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:02
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
卜回頭 22:54:02
哦
饶智勇 22:54:03
spring是负责业务逻辑层,struts是负责表现出,hibernate是负责持久层
饶智勇 22:54:13
这个一定要有深刻的印象
卜回頭 22:54:57
业务逻辑???代表?
饶智勇 22:56:13
由于每个人的开发习惯不同,有的人喜欢由前台到后台,有的人反之,但是我们都建议,后者:持久层->务逻辑层 ->表现层
饶智勇 22:56:26
就是处理业务的
饶智勇 22:57:50
业务,就是business,就是一个单元(个人,组织等)给另一个单元提供的服务。逻辑(logic)就是指人们思考问题,从某些已知条件出发推出合理的结论的规律。所以逻辑不可能离开业务,
饶智勇 22:59:25
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/F2J%NZP]1()[6(G}]HA%HFC.jpg)
卜回頭 23:00:00
业务逻辑方面自己还需要看下资料,,,接着
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/XI[T79S4DUV9]1R(MVL_MCU.jpg)
饶智勇 23:00:39
业务逻辑层
用于做一些有效性验证的工作,以更好的保证程序运行的健壮性。如完成数据添加、修改和查询业务等;不允许指定的文本框中输入空字符串,数据格式是否正确以及数据类型验证;用户权限的合法性判断等;通过以上的诸多判断以决定是否将操作继续向后传递,尽量保证程序的正常运行。
业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。
业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。
饶智勇 23:00:50
这是网上下的定义
饶智勇 23:00:51
呵呵
饶智勇 23:01:15
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/XI[T79S4DUV9]1R(MVL_MCU.jpg)
饶智勇 23:01:19
这里懂不懂?
卜回頭 23:01:41
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/C8]4I]DQ4I{8W4JTLB5P]Y5.jpg)
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/3ZY3O56Z{}N38PNZS)LUHQJ.jpg)
卜回頭 23:02:10
![](file:///d:/我的文档/Tencent%20Files/200844306/Image/4D8II4AA`V9`QIZFFOWH4NN.jpg)
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/[LC3U)F{0XCAB)LKNIT0K@G.gif)
饶智勇 23:08:17
以前在我们不用spring的时候我们都是这样做的,直接实例化对象的方式注入对象如:
public class A implements UserServiced{
private UserDao userDao = new UserDao();
........
public vid savae(Object obj){
userDao.save(Obj);
}
.....
}
当我们加入spirng 之后我们可以通过spring 的控制反转(IOC)进行注入
public class A implements UserServiced{
@Resource(name="userDao")
private UserDao userDao ;
........
public vid savae(Object obj){
userDao.save(Obj);
}
.....
}
饶智勇 23:08:42
这里就体现了解耦
饶智勇 23:11:10
spring 对业务逻辑没有侵入性,对别人没有依赖,当我们换掉 userDao的时候很轻松,而且不会对这个模块构成威胁报错
第一种就只是依赖UserDao userDao = new UserDao(); new UserDao();
饶智勇 23:11:42
表示下...在不在
卜回頭 23:11:52
恩
饶智勇 23:12:04
我这样说能看懂吗?
卜回頭 23:13:35
这里 private UserDao userDao = new UserDao();
卜回頭 23:14:08
是所谓的构造函数注入吗?
饶智勇 23:16:08
spring 中有3种入方式,set方法、注解、构造器
但是 private UserDao userDao = new UserDao(); 不是spring 的构造器注入方式
卜回頭 23:18:43
这个我明天消化下,
饶智勇 23:18:55
恩,
卜回頭 23:18:57
你要不去休息的?
饶智勇 23:19:27
开发中用的最多的还是set方法
饶智勇 23:19:40
我们明天早起
上课
饶智勇 23:19:45
一天的课
卜回頭 23:19:49
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/MNZG)S@Y~O64{]B~UL$X2KN.gif)
卜回頭 23:20:29
我们改次聊呀!早点休息吧!
卜回頭 23:20:40
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
![](file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/UG9`@AH2%L{}S0N6}3E~FO2.gif)
饶智勇 23:20:44
你消化下啊,不晓得你能不能接受,我可能讲的不是很到位
饶智勇 23:21:09
我还有会,再写点代码
卜回頭 23:21:28
就是最后那里还有点,明天我看下资料,就可以的,前面的都明白了~!!!
饶智勇 23:21:55
那就好
卜回頭 23:22:15
多谢你哦!
饶智勇 23:23:05
不谢
- 学习~!多谢智勇~!
- 深度学习及机器学习整理--多谢各个网络大神
- 智勇三国
- Tomcat学习总结(有不对的地方请指教,多谢)
- 认识张智勇!
- 智勇三国工作概要
- 智勇三国 单机小游戏
- 大家好,多谢关照
- 多谢csdn网了
- 多谢csdn.net
- 多谢捧场啦
- 智勇三国总结与计划
- 《程序员生存定律》 李智勇
- 分享一下 本人现在在学习C语言 谁有学好C语言的一些技巧 多谢
- 多谢CSDN的专家们
- 不错能够使用多谢了
- 一个基础有关问题,多谢
- 多谢不删之恩
- JDBC 链接 SQL SERVER 详解
- 第一次来这个站
- 说一下你眼中的Android的优点和不足之处(面试华为的人有被问过)!!!
- 新的一天
- 一个“回”型数字的程序
- 学习~!多谢智勇~!
- 一道关于字符串匹配的思考题
- 受人欢迎的四句话
- 关于mysql卸载 【转】
- 如何读取Jar包里的文件
- 80386的内存分页机制
- jar包及jar包中图片加载
- 我右下角的小喇叭不见了、救命啊
- 我的简单仿qq客户端C#代码