Skip to content

HQL практика - save c @Cleanup #6

@hazartilirot

Description

@hazartilirot

В чём собственно говоря у меня была проблема, я понимаю, что происходит, не понимаю правильно ли я решил)

session.save(entity)
помечен как deprecated, оно ещё работает, но ругается. Хочет, чтобы использовали
session.persist(entity)

всё как бы ничего, можно было жить, однако, все наши entity не попадают в базу данных, я так понимаю, что для persist важно находится в рамках session.beginTransaction() и session.getTransaction().commit();

session.beginTransaction();
*** ALL INSERTIONS ***
session.getTransaction().commit();

то есть, я решил это так:

        @Cleanup
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        Company microsoft = saveCompany(session, "Microsoft");
        Company apple = saveCompany(session, "Apple");
        Company google = saveCompany(session, "Google");

        User billGates = saveUser(session, "Bill", "Gates",
                LocalDate.of(1955, Month.OCTOBER, 28), microsoft);
        User steveJobs = saveUser(session, "Steve", "Jobs",
                LocalDate.of(1955, Month.FEBRUARY, 24), apple);
        User sergeyBrin = saveUser(session, "Sergey", "Brin",
                LocalDate.of(1973, Month.AUGUST, 21), google);
        User timCook = saveUser(session, "Tim", "Cook",
                LocalDate.of(1960, Month.NOVEMBER, 1), apple);
        User dianeGreene = saveUser(session, "Diane", "Greene",
                LocalDate.of(1955, Month.JANUARY, 1), google);

        savePayment(session, billGates, 100);
        savePayment(session, billGates, 300);
        savePayment(session, billGates, 500);

        savePayment(session, steveJobs, 250);
        savePayment(session, steveJobs, 600);
        savePayment(session, steveJobs, 500);

        savePayment(session, timCook, 400);
        savePayment(session, timCook, 300);

        savePayment(session, sergeyBrin, 500);
        savePayment(session, sergeyBrin, 500);
        savePayment(session, sergeyBrin, 500);

        savePayment(session, dianeGreene, 300);
        savePayment(session, dianeGreene, 300);
        savePayment(session, dianeGreene, 300);

        session.getTransaction().commit();

только после этого прошёл нормально все тесты.

В случае с save() записи появлялись в базе данный только после @cleanup

Screenshot 2023-03-07 at 13 41 29

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions