Тест Hibernate + Spring из общедоступной статической void main - PullRequest
3 голосов
/ 12 апреля 2011

Я новичок весны и гибернации. Я создал сущность User и DAO - UserHibernateDao. Я хочу проверить, как hibernate работает в простом java-классе с открытым статическим void main:

public class Starter {

public static void main(String[] args) {
    ApplicationContext context = new ClassPathXmlApplicationContext("/org/jtalks/jcommune/model/entity/applicationContext-dao.xml");
    Dao<User> uhd = (Dao) context.getBean("userDao");
    User user = new User();
    user.setNickName("UserName");
    uhd.saveOrUpdate(user);
}

}

но я получаю ошибку

ИНФОРМАЦИЯ: Использование источника данных [org.springframework.jdbc.datasource.DriverManagerDataSource@17b4703] Hibernate SessionFactory для HibernateTransactionManager Исключение в потоке "main" org.springframework.orm.hibernate3.HibernateSystemException: ни один Hibernate-сеанс не привязан к потоку, и конфигурация не позволяет создавать нетранзакционный сеанс здесь; вложенное исключение - org.hibernate.HibernateException: ни один сеанс Hibernate не связан с потоком, и конфигурация не позволяет создавать нетранзакционный сеанс в org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException (SessionFactoryUtils.java:679)

Я понимаю, что мне нужно создать что-то вроде сеанса и транзакции, но я не знаю, как именно я должен это сделать.

мой конфиг User.java UserHibernateDao.java Полный проект

Спасибо

Ответы [ 2 ]

1 голос
/ 13 апреля 2011

Я бы посоветовал вам прочитать этот справочник по Spring и Transaction Management , так как он поможет вам понять, как все это настроить.

1 голос
/ 12 апреля 2011

Добавьте аннотацию @Transactional к методу DAO.

Это инициирует контекст транзакции.

import org.springframework.transaction.annotation.Transactional;

@Transactional
public User getUser(int id) {
..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...