Каким образом необходимо внедрить Hibernate Session Factory в Spring MVC?

368
29 марта 2017, 15:42

Необходимо реализовать CRUD операции с БД MySQL. Использую Repository для доступа у данным.

 private SessionFactory sessionFactory;
public void setSessionFactory(final SessionFactory sf) {
    sessionFactory = sf;
}
@Override
public void insert(final ClientEntity object) {
    Session session = sessionFactory.getCurrentSession();
    session.persist(object);
    clientLog.info("Insert " + object);
}
@Override
public void update(final ClientEntity object) {
    Session session = sessionFactory.getCurrentSession();
    session.update(object);
    clientLog.info("Update " + object);
}
@Override
public void remove(final long id) {
    Session session = sessionFactory.getCurrentSession();
    ClientEntity client = session.load(ClientEntity.class, id);
    if (client != null) {
        session.delete(client);
    }
    clientLog.info("Delete " + client);
}
@SuppressWarnings("unchecked")
@Override
public List<ClientEntity> readAll() {
    final String query = "select p from"
            + ClientEntity.class.getSimpleName() + "p";
    Session session = sessionFactory.getCurrentSession();
    List<ClientEntity> clientList = session.createQuery(query).list();
    for (ClientEntity c : clientList) {
        clientLog.info("Item:", c);
    }
    return clientList;
}
@Override
public ClientEntity getObjectId(final long id) {
    Session session = sessionFactory.getCurrentSession();
    ClientEntity client = session.load(ClientEntity.class, id);
    clientLog.info("Client" + client);
    return client;
}

При обращении к базе данных выпадает исключение NullPointerException. Я предполагаю потому что SessionFactory не инициализирован. Пробовал использовать @Autowared но возникает ошибка указывающая что SessionFactory нет в списке бинов для внедрения. Возможно я ошибся в конфигурации.

private Properties hibernateProperties() {
    Properties htProperties = new Properties();
    htProperties.put("hibernate.dialect",
            env.getProperty("hibernate.dialect"));
    htProperties.put("hibernate.show_sql",
            env.getRequiredProperty("hibernate.show_sql"));
    htProperties.put("hibernate.hbm2ddl.auto",
            env.getRequiredProperty("hibernate.hbm2ddl.auto"));
    return htProperties;
}
@Bean
public PlatformTransactionManager transactionManager() {
    JpaTransactionManager transactionManager =
            new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(
            entityManagerFactory().getObject());
    return transactionManager;
}

Пробовал исправить на:

@Bean
public LocalSessionFactoryBean transactionManager() {
    LocalSessionFactoryBean factoryBean =
            new LocalSessionFactoryBean();
    factoryBean.setDataSource(dataSource());
    return factoryBean;
}

Но выпадает стек с ошибкой 500:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

В чем может быть проблема?

READ ALSO
Хранение много-тайловых объектов в тайл-карте

Хранение много-тайловых объектов в тайл-карте

Здравствуйте! Мне нобходимо найти способ хранить тайлы, с размерами больше 1x1 в стандартной тайл-карте (tilemap, как по русски то?)

358
Настройка шрифта в IntelliJ IDEA

Настройка шрифта в IntelliJ IDEA

Подскажите пожалуйста, как "утолстить" шрифт в IntelliJ IDEА? Просто в Windows он настолько тонок, что смотреть неприятно

526
Кодировка текстовых файлов

Кодировка текстовых файлов

Недавно столкнулся с проблемой: при считывании из текстового файла, русские символы преобразовывались в '�', при том, что раньше такого не было

292