java高手进,帮忙解答下DAO工厂设计模式方面的问题
你还可以使用代理模式
DAO设计模式实际上是两个模式的组合,即Data Accessor模式和Active Domain Object模式。其中Data Accessor模式实现了数据访问和业务逻辑的分离,即将数据访问的实现机制加以封装,与数据的使用代码相分离,从外部来看,提供黑盒式的数据存取接口。而Active Domain Obejct模式实现了业务数据的对象化封装,提供了对所面向领域的对象的封装。
DAO模式通过对业务层提供数据抽象层接口,实现了以下几个目标:数据存储逻辑的分离;数据访问底层实现的分离;资源管理和调度的分离;数据抽象。
DAO模式的实现:
(1)创建一个抽象工厂类,它包含两个重要的部分:第一部分是一些抽象方法,这些抽象方法是所有实现该抽象工厂的具体工厂类所必须的
(2)然后,分别创建各个类型数据源的工厂类,在这个工厂类中里面也有两个重要组成部分
(3)定义具体DAO类的接口,并在接口中定义所有的业务方法,和数据操作方法。
(4)定义具体的DAO类,在这个类中才是实际的业务方法,和数据操作的实现。
(5)定义数据传输对象,它是用来在客户端和DAO之间传递数据的,它其实就是javabean
(6)完成以上5步后我们就可以在数据客户端使用以上由DAO设计模式定义好的各个类了。
答:PersonDAO personDAO=new PersonDAOImpl()引用这句话让表现成取得DAO对象,表现成可以通过“personDAO.方法”来对数据库person表进行操作。
2、又写了个PersonDAOJDBCImpl.java类,在表现层全部改成这个类是说的什么意思?
答:上面写的很清楚,DAO的Hibernate实现开始全部转换成JDBC实现。但是项目经理建议不要破坏现有的Hibernate实现,以后可以通过技术研究来提升Hibernate的访问效率。所以要在不破坏DAO的Hibernate实现(PersonDAOImpl.java)的情况下实现DAO的JDBC实现,所以只能在写一个PersonDAOJDBCImpl.java(PersonDAOImpl.java类和PersonDAOJDBCImpl.java类同时存在都实现PersonDAO 接口),要使用JDBC实现,表现层就要将PersonDAO personDAO=new PersonDAOImpl()改为PersonDAO personDAO=new PersonDAOJDBCImpl(),所有用到的页面都要改。
如果使用DAO工厂类,表象成可以这样引用PersonDAO personDAO=DaoFactory.get getPersonDAOInstance();
遇到以上问题,修改的时候只要将工厂累修改一下就可以了
public class DaoFactory{
public static PersonDAO getPersonDAOInstance()
{
return new PersonDAOImpl() ;
}
将上面的改为下面的
public class DaoFactory{
public static PersonDAO getPersonDAOInstance()
{
return new PersonDAOJDBCImpl();
}
其实说的意识是一开始就要用工厂,之后修改起来就方便了。
我觉得有两种方法可以解决,一个是改用Spring框架全面托管类的实例化,第二种方法可以使用接口的方式但是只是减小了一半的代码改动量。要不就用代理和反射机制
真长
相关视频
java问题求解!!请高手帮忙啊!我是新手!!
一句话:环境变量classpath(类路径)没有设置正确,使得JAVA虚拟机无法找到类来执行目标程序。详细原因:java是通过java虚拟机来解释运行的,也就是通过java命令; javac编译生成的.class文件就是虚拟机要执行的代码, 称之为字节码(bytecode),虚拟机通过classloader来装载这些字节码,也就是通常意义上的类.这里就有一
关于面试JAVA工程师中遇到的一些棘手的问题,求大家帮忙来解答下,求助各位...
一:项目经理分两种,一种是技术的,一种是业务的。基本都是负责项目的架构设计实现安排与进度等。项目经理基本不写代码,是给你分配任务的人,你具体负责的类型很多,需求分析,架构设计,编码实现,项目测试等。具体的你做过什么就说什么。二:没做过正式的商业项目你就说你做过实践项目,不要吹牛,...
java循环越跑越慢为什么?高手进
高手进 大家看下,这个循环我是要从数据库中提取20W条数据,然后先放到一个ArrayList里,但为什么越跑越慢呢?高手指点下. List rows = jdbcTemplate.queryForList(SQL_select_Entry,new Object[] { 140000,0 }); for(int m=0;m<rows.size();m++,counter++){...
请高人进.JAVA的问题
就是用那个像文本编辑软件开发JAVA程序,请高手详讲解一下,乱粘的可以滚开,为了避免没人答复 ,浪费分数,但是解释清楚后,我一定追加50分....类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发...
请一位计算机高手、掌握java的专业人士给我简要讲解几个基础问题?_百...
你这问题有点多,建议找本计算机基础之类的书看看 我简单说下 计算机关键硬件是cpu和内存,cpu负责计算和存放正在计算用的临时数据,内存主要负责存放非正在计算用的临时数据 互联网的工作原理说起来就复杂多了,一句话:把大家的电脑手机等设备通过一定的协议(目前主要是tcp\/IP协议)连接起来共享数据 jav...
JAVA新手请教几个小问题,希望高手作答,小弟不甚感谢!急~!!!_百度知...
Applet 的字节码文件必须嵌入 html 文件,用 浏览器 充当解释器解释运行。菜单是用户图形界面的重要组成部分,是由 菜单项、命令项、菜单栏、下拉菜单 等对象组成。Applet显示相关的3个方法是:paint()方法、resize()方法和showStatus()方法。根据序的构成和运行环境的不同,Java源程序分为两大类:.exe...