★能完满解决→【+100分】Hibernate自动生成的Dao调用问题
我有2个表生成了Dao:其中一个接口:publicinterfaceIBaseHibernateDAO{publicSessiongetSession();}一个接口的实...
我有2个表生成了Dao:
其中一个接口:
public interface IBaseHibernateDAO {
public Session getSession();
}
一个接口的实现:
public class BaseHibernateDAO implements IBaseHibernateDAO {
public Session getSession() {
return HibernateSessionFactory.getSession();
}
}
还有2个实际操作数据库的类,继承BaseHibernateDAO:
public class NewsinforDAO extends BaseHibernateDAO {
具体实现不重要,略……
}
public class UserinforDAO extends BaseHibernateDAO {
具体实现不重要,略……
}
============
现在我写业务逻辑:
public class BaseServiceImpl implements BaseService {
}
这里面,怎么调用Hibernate自动生成的Dao?(不要和我说分别new NewsinforDAO和UserinforDAO,每次用还要看new哪个类。要是1000个类不是要找到死?)
我要类似接口的解决方式(第一次用工具生成Dao,原来一直手写的。说起来Hibernate自动生成的Dao还真不怎么样……)
========================================================
谢谢dinggx,我原来就是这样用的。
因为一直看到别人说什么工具自动生成,我想看看是什么样子的。
不过你貌似偏题了……
我想问的是:自动生成的DAO怎么调用?用hibernate工具生成Dao开发的朋友们说说?
===========================
1000个类,我只是打个比方,是说假如类很多的情况。
现在的问题归纳起来是父类调用子类的问题:
hibernate生成的Dao,如果只有一个类,那么生成一个Dao。
这个我可以在业务逻辑BaseServiceImpl里写构造方法,通过自动生成的接口IBaseHibernateDAO调用BaseHibernateDAO,再从BaseHibernateDAO这个父类可以调用一个子类。在业务逻辑BaseServiceImpl里我就能直接用自动生成的接口IBaseHibernateDAO调用Dao实现了。
但是现在我现在有2个类,生成了2个Dao文件,现在怎么用父类调用同时多个子类?
================================
dinggx,生成的2个dao文件继承于同一个接口实现类BaseServiceImpl?
什么意思?java貌似不能多重继承,就算继承了有什么用啊?
感谢shiryu963,给我提供了点思路。 展开
其中一个接口:
public interface IBaseHibernateDAO {
public Session getSession();
}
一个接口的实现:
public class BaseHibernateDAO implements IBaseHibernateDAO {
public Session getSession() {
return HibernateSessionFactory.getSession();
}
}
还有2个实际操作数据库的类,继承BaseHibernateDAO:
public class NewsinforDAO extends BaseHibernateDAO {
具体实现不重要,略……
}
public class UserinforDAO extends BaseHibernateDAO {
具体实现不重要,略……
}
============
现在我写业务逻辑:
public class BaseServiceImpl implements BaseService {
}
这里面,怎么调用Hibernate自动生成的Dao?(不要和我说分别new NewsinforDAO和UserinforDAO,每次用还要看new哪个类。要是1000个类不是要找到死?)
我要类似接口的解决方式(第一次用工具生成Dao,原来一直手写的。说起来Hibernate自动生成的Dao还真不怎么样……)
========================================================
谢谢dinggx,我原来就是这样用的。
因为一直看到别人说什么工具自动生成,我想看看是什么样子的。
不过你貌似偏题了……
我想问的是:自动生成的DAO怎么调用?用hibernate工具生成Dao开发的朋友们说说?
===========================
1000个类,我只是打个比方,是说假如类很多的情况。
现在的问题归纳起来是父类调用子类的问题:
hibernate生成的Dao,如果只有一个类,那么生成一个Dao。
这个我可以在业务逻辑BaseServiceImpl里写构造方法,通过自动生成的接口IBaseHibernateDAO调用BaseHibernateDAO,再从BaseHibernateDAO这个父类可以调用一个子类。在业务逻辑BaseServiceImpl里我就能直接用自动生成的接口IBaseHibernateDAO调用Dao实现了。
但是现在我现在有2个类,生成了2个Dao文件,现在怎么用父类调用同时多个子类?
================================
dinggx,生成的2个dao文件继承于同一个接口实现类BaseServiceImpl?
什么意思?java貌似不能多重继承,就算继承了有什么用啊?
感谢shiryu963,给我提供了点思路。 展开
展开全部
那就用泛型吧,生成的内容都是一样的。如果没有特殊的需求,一个实现类搞定所有的业务操作。有特殊需求,再从这个泛型实现类中继承过来
-----------
哎,工具生成的哪能跟手动写的比呢,它只能用来解决一些通用的操作,如果你真的有1000个类,那就绝对是一个超大型的项目,怎么可能会让它自动生成呢?现在比较流行的做法是Spring配置文件,加上HibernateSupportDao类,dao的初始化由spring容器来做。现在的工具还没有智能到零代码编写程序的地步,话又说回来,如果真的什么都交给工具了,要我们程序员还做什么
所以,小的项目、要求不太严的项目用工具帮助快速开发,通过new的方式创建实例也是必须的。大的项目,表格能超过100个的都是大型项目了,手工编码可以更好地解决问题,可以更好地把人的作用体现出来。
~~~~~~~~~~~~~~~~~~~~~
生成的2 个dao文件继承于同一个接口实现类BaseServiceImpl,同样可以使用原来的方式进行子类的调用。但不管怎么用,你总是要给它子类的名称的,
如果能再加上泛型的使用就更完美了,采用反射机制进行POJO的调用,这样可以通过BaseServiceImpl类来实现一些通用功能,子类只需完成特殊需求。
~~~~~~~~~~~~~~~~~~~~~~`
V512工作室的hibernate视频中第5讲是讲如何定义一个泛型DAO,以及如何使用的。你可以下载下来看一下。
http://www.verycd.com/topics/215898/
-----------
哎,工具生成的哪能跟手动写的比呢,它只能用来解决一些通用的操作,如果你真的有1000个类,那就绝对是一个超大型的项目,怎么可能会让它自动生成呢?现在比较流行的做法是Spring配置文件,加上HibernateSupportDao类,dao的初始化由spring容器来做。现在的工具还没有智能到零代码编写程序的地步,话又说回来,如果真的什么都交给工具了,要我们程序员还做什么
所以,小的项目、要求不太严的项目用工具帮助快速开发,通过new的方式创建实例也是必须的。大的项目,表格能超过100个的都是大型项目了,手工编码可以更好地解决问题,可以更好地把人的作用体现出来。
~~~~~~~~~~~~~~~~~~~~~
生成的2 个dao文件继承于同一个接口实现类BaseServiceImpl,同样可以使用原来的方式进行子类的调用。但不管怎么用,你总是要给它子类的名称的,
如果能再加上泛型的使用就更完美了,采用反射机制进行POJO的调用,这样可以通过BaseServiceImpl类来实现一些通用功能,子类只需完成特殊需求。
~~~~~~~~~~~~~~~~~~~~~~`
V512工作室的hibernate视频中第5讲是讲如何定义一个泛型DAO,以及如何使用的。你可以下载下来看一下。
http://www.verycd.com/topics/215898/
展开全部
用父类调用同时多个子类,你这个说的是使用工厂类调用不同的功能类,这个是spring来处理的。
建议一个dao只处理一个表的curd,这样是为了解耦合
你可以参考这个
http://hi.baidu.com/shiryu963/blog/item/c8dec4cf01a2443bf9dc612b.html
建议一个dao只处理一个表的curd,这样是为了解耦合
你可以参考这个
http://hi.baidu.com/shiryu963/blog/item/c8dec4cf01a2443bf9dc612b.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在BaseService中做文章加上泛型应该可以解决,DAO
就是增删改查
就是增删改查
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询