Как выполнить файл sql-script, используя hibernate? - PullRequest
3 голосов
/ 15 января 2010

Я напишу несколько интеграционных тестов, которые будут проверять взаимодействие с БД. Для каждого теста мне нужно иметь определенный снимок БД. Каждый снимок БД сохраняется в файле .sql. Я хочу выполнить определенный файл сценария в определенном методе тестирования, например:

@Test
public void test_stuff(){
   executeScript(finame.sql);

   ... testing logic ...

   clean_database();
}

Есть ли у hibernate какие-либо средства для этого?

Ответы [ 4 ]

3 голосов
/ 15 января 2010
  • Вы можете автоматически выполнять сценарий SQL при запуске hibernate: запишите свои команды SQL в файл с именем import.sql и поместите его в корень CLASSPATH.

  • Вам не нужно очищать базу данных для теста, просто сделайте тест транзакционным с откатом в конце каждого теста. Следовательно, вы уверены, что ваша база данных не загрязнена вашими тестами. Например, используя Spring:

    @Transactional
    @TransactionConfiguration
    public class MyTest {
    ...
    }
    

Если вы не используете Spring, попробуйте тестовую среду с поддержкой транзакций отката по умолчанию.

2 голосов
/ 06 октября 2010

Тема устаревшего метода Session.connection () обсуждается здесь

0 голосов
/ 06 августа 2010

Вы слышали о гиперзвуковом SQL? Это база данных в памяти, где все ваши таблицы находятся в памяти, затем проведите тест (с помощью Read, update, insert, delete), наконец, когда вы закроете все данные исчезли Подробнее на: http://www.hsqldb.org/

0 голосов
/ 15 января 2010

Вы можете получить базовое соединение JDBC через экземпляр сеанса гибернации:

https://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#connection()

Таким образом, вы можете написать свой метод executeScript (), чтобы взять имя файла и сеанс гибернации, прочитать файл и выполнить sql для соединения jdbc.

НТН

...