我没有从现有的答案得到正确的理解我完全基于表单的网络应用程序,其中我有一个每个窗体的弹簧控制器。Spring控制器,服务类,HiberNate Dao类?为什么在dao的服务类中没有例外?
具有所有服务类实例的变量代码(单例对象)声明的公共基类(避免在每个控制器中声明bo成员变量,用于业务服务交互),它是所有控制器的父代。
具有所有dao服务实例的变量(单例对象)声明的代码的公共基类,它是所有BO的类的父代。
具有HibernateTemplate变量(单例对象)声明的代码的通用基类,使用@Autowired annotaions的SessionFactory.Which是所有dao类的父代。上述三个类中都有Logger对象实例的父代。
一个fbisExceptionHandler.java它从所有控制器上所有@RequestMapping方法捕捉异常的波纹管
@ControllerAdvice
public class ExceptionControllerAdvice
{
@ExceptionHandler(Exception.class)
public ModelAndView exception(Exception e)
{
ModelAndView mav = new ModelAndView("exception");
mav.addObject("name", e.getClass().getSimpleName());
logger.error(e.getMessage())
mav.addObject("message", e.getMessage());
return mav;
}
}
请回答我的问题
1)是用于处理所有异常i将这种单一的方法精细,E那些陷入控制器,服务类,dao类?
2)为什么我的所有hibernate dao的方法不使用try..catch块或在方法签名中抛出declaraion .... hibernate dao的did'nt是否抛出任何异常?如果是,他们在哪里发现?
例如我的一个hibernate dao是
3)如何处理来自db供应商的所有常量?有没有休眠的内置方式? 4)为什么我所有的bo的方法都不使用try..catch块,或者在方法签名中抛出declaraion ....抛出和捕获了什么异常?
My sample dao
package com.fbis.form18.daoimp;
all imports
@Repository
public class Form18daoImp implements Form18Dao{
@Autowired
SessionFactory sessionFactory;
HibernateTemplate hibernateTemplate;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory)
{
this.hibernateTemplate=new HibernateTemplate(sessionFactory);
}
public void save(Form18Dtls form18dtls) {
sessionFactory.getCurrentSession().save(form18dtls);
logger.info("Form18Dtls saved successfully");
}
@Override
public Form18Dtls findbyFacId(String facID) {
@SuppressWarnings("rawtypes")
List list=hibernateTemplate.find("from Form18Dtls where FAC_ID=?", facID);
logger.info("findbyFacId ran successfully");
return (Form18Dtls)list.get(0);
}
all dao's methods are continued here..
}
My sample bo
package com.fbis.form18.boimp;
all imports
@Service("form18Bo")
public class Form18boImp implements Form18Bo
{
@Autowired
Form18Dao form18dtlsdao;
@Transactional
public void save(Form18Dtls from18dtls)
{
String UniqueTransactionNumber=getFacId(from18dtls.getFacDistrict(),"Form18_Dtls");
from18dtls.setFacId(UniqueTransactionNumber);
from18dtls.setSubmtdDate(new java.util.Date());
from18dtls.setAppStatus("I");
from18dtls.setFormId(23);
form18dtlsdao.save(from18dtls);
}
public String getFacId(String district,String tableName)
{
FacIdGenerator facid=new FacIdGenerator();
String genFacid=facid.factoryIdCreator("F18", district, tableName);
logger.info("getFacId ran successfully");
return genFacid;
}
@Override
public Form18Dtls findbyFacId(String facID) {
return form18dtlsdao.findbyFacId(facID);
}
other bo's continued here
如果我下面的类错误heirarkey,建议,欢迎,提前
请任何机构可以回答? – user3252888