现在的位置: 首页 > 综合 > 正文

Matrix Java 大讲坛:DAO 模式的应用(Matrix 朱世杰)

2013年08月07日 ⁄ 综合 ⁄ 共 2335字 ⁄ 字号 评论关闭

( 农民 - Javen) 19:46:46

时间到了,现在开始吧!

大家欢迎 朱世杰 给我们讲解 DAO 模式的应用!

(_阿古) 19:46:57

欢迎

( 农民 - Javen) 19:47:02

还是老习惯,请大家用普通字体、颜色。 主讲使用红色

(杨树) 19:47:04

啪啪啪啪,鼓掌

(_阿古) 19:47:16

(朱世杰℡) 19:47:18

大家好,呵呵,很荣幸能和大家交流一下

( foxcrane) 19:47:18

(&咚咚响) 19:47:19

.

(山鬼的情人) 19:47:27

( foxcrane) 19:47:28

(ThinkInJava) 19:47:33

( 农民 - Javen) 19:47:34

(聊且一笑) 19:47:42

(朱世杰℡) 19:47:48

开始吧?

( 农民 - Javen) 19:48:11

好的! 现在开始!

(郁也风) 19:48:15

(_阿古) 19:48:28

(朱世杰℡) 19:48:35

DAO模式大家都熟悉的,就是数据访问对象

(朱世杰℡) 19:49:17

本来这部分是CHAR来讲的,现在我和大家先交代一下,这些官方的语言我不太会说

(朱世杰℡) 19:50:00

大家觉得有必要在讲DAO的含义吗,我想直接讲方案好了,时间不够

(朱世杰℡) 19:50:19

DAO的包装现在已经发展的很成熟了

(郁也风) 19:50:22

(杨树) 19:50:28

(朱世杰℡) 19:50:47

我一会给大家介绍一个方案

(朱世杰℡) 19:50:55

先说说它的特点吧

(朱世杰℡) 19:51:46

1,传统的分层结构,和一些数据库隔离等等

(朱世杰℡) 19:52:20

这些我不多说了。2,以接口来编程

(朱世杰℡) 19:52:37

大家可以随时提问

(朱世杰℡) 19:53:10

接口编程不是大家通常说的,而是你在新加一个实体以后,所做的只是CODE一个接口

(&咚咚响) 19:53:23

不应该说是用接口而以..

(朱世杰℡) 19:53:31

也就是用了反射和代理

(&咚咚响) 19:53:31

基类才是用接口..

(&咚咚响) 19:53:49

具体的还是类,而不是接口吧..

(朱世杰℡) 19:54:02

呵呵,是接口,所以我觉得它特别

(朱世杰℡) 19:54:13

不需要你实现它

( foxcrane) 19:54:20

你说的这个接口编程和大家通常说的 有什么区别

你用DAO接口来解决多数据库支持的问题么

(冰云) 19:54:22

是通过接口方法名调用named query哪个吗?

(朱世杰℡) 19:54:54

TO FOXCRANE

(&咚咚响) 19:55:19

DAO是封装了data source怎么可能是接口的呢..我还是不明白啊

(朱世杰℡) 19:55:26

你还没理解我的意思,是说只做接口,程序会代理它的实现的

(朱世杰℡) 19:55:42

TO 冰云

(朱世杰℡) 19:56:20

你说的这个在后面我会谈到,不过现在,只是谈到这个CRUD

(拓拔涛) 19:56:27

程序会代理它的实现的?

(朱世杰℡) 19:56:41

也就是动态代理了。

(拓拔涛) 19:56:58

恩,继续~

( foxcrane) 19:57:03

哦,好象很有趣,关注

(朱世杰℡) 19:57:27

普通的SAVE ADD 等等,这些是可以代理的

(朱世杰℡) 19:58:08

但是具有业务特色的查询怎么办?只有自己来做了

(&咚咚响) 19:58:37

那其实只要在DAO之前加一个service就可以了..

(朱世杰℡) 19:58:37

自己做也并不意味着要写那么多代码的复杂实现

(聊且一笑) 19:59:52

好,有意思,动态代理

(朱世杰℡) 20:00:17

因为HIBERNATE是有NAMED QUERY的,所以我们也可以用代理的方法,分2步,1,先在那个实体接口里加上自己的业务方法

(朱世杰℡) 20:00:55

2,在实体配置里加上NAMED QUERY

(朱世杰℡) 20:01:22

这样比直接用HIBERNATENAMDE QUERY也方便很多

(朱世杰℡) 20:01:43

我们要做的就这2

(朱世杰℡) 20:02:32

还有问题吗

(朱世杰℡) 20:02:56

这部分是比较难理解的

( 农民 - Javen) 20:03:02

举例? 问题多了,没有明白!

(聊且一笑) 20:03:23

这个举个例子

(朱世杰℡) 20:03:33

OK

(拓拔涛) 20:04:01

所有的都要到配置里面处理?

(朱世杰℡) 20:04:10

public interface UserMgr {

public void add(User user) throws PersistenceException;

public void update(User user) throws PersistenceException;

public void remove(User user) throws PersistenceException;

public User findByPrimaryKey(Long id) throws LookupException;

public Collection findAll() throws LookupException;

}

(朱世杰℡) 20:04:47

如果只是简单的CRUD,那么我们在新加了一个实体以后,要做的就是这么多

( 农民 - Javen) 20:05:39

你说的这个实体,是另外的 POJO ?还是实现 POJO 还加上实现这个接口?

(朱世杰℡) 20:05:52

就是HIBERNATE里的PO

(朱世杰℡) 20:06:20

(朱世杰℡) 20:06:59

意思就是简化我们的CODE

(&咚咚响) 20:07:26

那就是把一个PO变成一个BO

(朱世杰℡) 20:08:18

按我的理解,在这里,还只是PO

(&咚咚响) 20:08:42

可是你的PO已经加了业务逻辑啊..比如add()..update之类的啊

(朱世杰℡) 20:09:11

不是的,

抱歉!评论已关闭.