简体   繁体   English

Spring Hibernate中的多个数据库

[英]Multiple Databases in Spring Hibernate

I want to ask how i connect second database in my program . 我想问一下如何连接我程序中的第二个数据库。 First i tell you this is a inventry system . 首先我告诉你这是一个发明系统。 I want to get functionality that when i update the record in existing data base record also update into other databases. 我希望得到的功能是,当我更新现有数据库记录中的记录时,还会更新到其他数据库中。 please checkout the code . 请查看代码。 I use this code for single database connection and for the update record . 我将此代码用于单个数据库连接和更新记录。 I create another button in my webpage . 我在网页上创建了另一个按钮。 i need that when i click the second button record save in second database . 当我点击第二个按钮记录保存在第二个数据库时,我需要它。

jdbc.driver=com.mysql.jdbc.jdbc2.optional.MysqlDataSource
jdbc.driver2=com.mysql.jdbc.Driver
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.databaseurl=jdbc:mysql://localhost:3306/bvasdb?zeroDateTimeBehavior=convertToNull&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
jdbc.username=admin
jdbc.password=admin

<beans:property name="dataSource">
<beans:bean class="${jdbc.driver}">
  <beans:property name="url" value="${jdbc.databaseurl}" /> 
  <beans:property name="user" value="${jdbc.username}" /> 
  <beans:property name="password" value="${jdbc.password}" /> 
  </beans:bean>

@RequestMapping("partmaintenanceupdate")
    public ModelAndView partmaintenanceUpdate(@RequestParam("partmaintenancemode") String partmaintenancemode,
            @RequestParam("searchpartno") String searchpartno,
            @RequestParam("makemodelcodeselected") String makemodelcodeselected,
            @RequestParam("subcategoryselected") String subcategoryselected,
            @RequestParam("ordertypeselected") String ordertypeselected, Model map, HttpSession session,
            ModelAndView mav) {
        AppUser user = (AppUser) session.getAttribute("user");
        if (user == null) {
            throw new OrderNotFoundException();
        } else {
            LOGGER.info("#partmaintenanceupdate");
            if (subcategorylistdd.size() == 0) {
                subcategorylistdd = mainService.getAllSubCategory();
            }
            if (makemodellistdd.size() == 0) {
                makemodellistdd = mainService.getAllMakeModelMap();
            }
            if (ordertypelistdd.size() == 0) {
                ordertypelistdd = mainService.getAllOrderType();
            }

            partmaintenancemode = "update";

            parts.setPartno(request.getParameter("partno").trim().toUpperCase());
            parts.setInterchangeno(request.getParameter("interchangeno").trim().toUpperCase());
            parts.setYear(request.getParameter("year").trim());
            parts.setYearfrom(Integer.parseInt(request.getParameter("yearfrom").trim()));
            parts.setYearto(Integer.parseInt(request.getParameter("yearto").trim()));
            parts.setPartdescription(request.getParameter("partdescription").trim());
            parts.setActualprice(new BigDecimal(request.getParameter("actualprice").trim()));
            parts.setCostprice(new BigDecimal(request.getParameter("costprice").trim()));
            parts.setListprice(new BigDecimal(request.getParameter("listprice").trim()));
            parts.setWholesaleprice(new BigDecimal(request.getParameter("wholesaleprice").trim()));
            parts.setUnitsinstock(Integer.parseInt(request.getParameter("unitsinstock").trim()));
            parts.setUnitsonorder(Integer.parseInt(request.getParameter("unitsonorder").trim()));
            parts.setReorderlevel(Integer.parseInt(request.getParameter("reorderlevel").trim()));
            parts.setSafetyquantity(Integer.parseInt(request.getParameter("safetyquantity").trim()));
            parts.setKeystonenumber(request.getParameter("keystonenumber").trim());
            parts.setOemnumber(request.getParameter("oemnumber").trim());
            parts.setDpinumber(request.getParameter("dpinumber").trim());
            parts.setLocation(request.getParameter("location").trim());
            parts.setCapa(request.getParameter("capa").trim());
            parts.setMakemodelcode(makemodellistdd.get(request.getParameter("makemodelcodeselected").trim()));
            parts.setSubcategory(subcategorylistdd.get(request.getParameter("subcategoryselected").trim()));
            parts.setOrdertype(request.getParameter("ordertypeselected").trim());
            partsService.updatePartsMaintenance(parts);

            mav.clear();
            mav.setViewName("partmaintenancepage");
            mav.addObject("user", user);
            mav.addObject("branch", branch);
            mav.addObject("appcss", appcss);
            mav.addObject("sysdate", InsightUtils.getNewUSDate());
            mav.addObject("partmaintenancemode", partmaintenancemode);
            mav.addObject("subcategorylistdd", subcategorylistdd);
            mav.addObject("makemodellistdd", makemodellistdd);
            mav.addObject("ordertypelistdd", ordertypelistdd);
            mav.addObject("makemodelcodeselected", makemodelcodeselected);
            mav.addObject("subcategoryselected", subcategoryselected);
            mav.addObject("ordertypeselected", ordertypeselected);
            mav.addObject("searchpartno", searchpartno);
            mav.addObject("parts", parts);
            return mav;
        }
    }

@Transactional
    public void updatePartsMaintenance(Parts parts) {
        Session session = sessionFactory.getCurrentSession();
        session.saveOrUpdate(parts);

        // updateSubcategoryOnParts();
        // updateMakemodelOnParts();
        session.flush();
        session.clear();
    }

I create a button in my webpage . 我在网页上创建了一个按钮。 i need to update the data in second database only when i click the button . 我只需要在单击按钮时更新第二个数据库中的数据。

If you need more then one DB you need more then one HibernateSessionFactory. 如果您需要多个DB,则需要多个HibernateSessionFactory。

You just create an hibernate factory for each DB with the relevant table mapping in each configuration. 您只需为每个DB创建一个hibernate工厂,并在每个配置中使用相关的表映射。

创建多个数据源bean并在自动装配时使用@Qualifier来选择所需的连接。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM