有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringHibernate中的java多数据库

我想问一下如何连接程序中的第二个数据库。首先我告诉你这是一个发明系统。我想获得这样的功能,即当我更新现有数据库中的记录时,记录也会更新到其他数据库中。请检查代码。我将此代码用于单个数据库连接和更新记录。 我在我的网页中创建了另一个按钮。当我点击第二个按钮记录保存在第二个数据库时,我需要它

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();
    }

我在我的网页中创建了一个按钮。我只需要在单击按钮时更新第二个数据库中的数据


共 (2) 个答案

  1. # 1 楼答案

    如果需要多个DB,则需要多个HibernateSessionFactory

    您只需为每个数据库创建一个hibernate工厂,并在每个配置中使用相关的表映射

  2. # 2 楼答案

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