Предварительное заполнение сущностей в базе данных для целей тестирования
Я занимаюсь разработкой приложения Java EE 7. В целях тестирования было бы очень полезно заполнить базу данных некоторым содержанием. В этом руководстве объясняется, как создать содержимое базы данных во время выполнения или перед его использованием, используя файл SQL. Я предполагаю, что в этом файле SQL я мог бы сделать что-то вроде этого:
INSERT INTO ENTITYNAME(ENTITYATTRIBUTE1, ENTITYATTRIBUTE2, ... ENTITYATTRIBUTEN) value
("entityAttribute1", "entityAttribute2, ... "entityAttributeN")
Если мой подход правильный, как бы я предоставил значение атрибута @ElementCollection, @OneToMany или просто атрибута Entity?
1 ответ
Если вы хотите предварительно заполнить свою базу данных тестовыми данными с помощью сценария sql, вам придется изучить схему, сгенерированную JPA из вашего @Entity
классы.
Например, если у вас есть 2 @Entity
s:
@Entity
public class Foo {
@Id int id;
@ElementCollection Set<String> strings;
@OneToMany(mappedBy"foo") Set<Bar> bars;
}
@Entity
public class Bar {
@Id int id;
@ManyToOne
Foo foo;
}
Вы должны будете проверить сами, но сгенерированная схема может выглядеть примерно так.
create table Foo {
id int primary key
}
create table Foo_strings {
Foo_id int references Foo (id),
strings varchar,
}
create table Bar {
id int primary key,
Foo_id references Foo(id)
}
Так что, если вы хотите создать некоторые тестовые данные в SQL, вы можете создать setup_test_data.sql
лайк:
insert into Foo values (1);
insert into Foo_strings values (1, "string 1");
insert into Foo_strings values (1, "string 2");
insert into Bar values (1, 1);
insert into Bar values (2, 1);
Это было бы так же, как Foo
с 2 String
с в струнах @ElementCollection
и 2 Bar
с в барах @OneToMany
связь.