Spring,Hibernate会话管理

时间:2017-04-19 09:26:30

标签: spring hibernate session sessionfactory session-management

目前我在我的应用程序中使用Hibernate,Spring和postgres作为数据库。不幸的是,与数据库的连接不断增加。

DAO Implementation类中的每个方法都会增加连接数。下面是DAO Impl中的代码段。

@Autowired
    SessionFactory sessionFactory;

    /**
     * Used to save or update a SourceConfig.
     * 
     * @throws Exception
     */
    @Override
    @Transactional
    public Long saveOrUpdateSourceConfig(SourceConfig sourceconfig) {
        Session session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
                .getRequest();
        HttpSession httpsession = request.getSession();

        try {

            session.saveOrUpdate(sourceconfig);
            session.flush();
            tx.commit();

        } catch (JDBCException e) {
            tx.rollback();
            String nextException = e.getSQLException().getNextException().getLocalizedMessage();
            e.printStackTrace();
            System.out.println("next version" + nextException);
        }
        Serializable id = session.getIdentifier(sourceconfig);
        return (Long) id;

    }

我无法使用 session.getcurrentsession()并且始终返回null并且我没有在DAOImpl中的任何位置关闭会话。

请高度赞赏您的回复。

0 个答案:

没有答案