0
我使用Hibernate和具有以下设置:我是否需要在Hibernate中显式启动和结束事务?
@Entity
public class Owner {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@OneToMany(cascade = CascadeType.ALL)
private List<Dog> dogs = new ArrayList<>();
}
@Entity
public class Dog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
}
public class PersonDao {
public Long createPetRelation(String ownerName, String dogName) {
EntityManager entityManager = entityManagerFactory.createEntityManager();
Dog dog = new Dog();
dog.setName("Fido");
Person person = new Person();
person.setName("Joe");
person.addDog(dog);
entityManager.persist(person);
return person.getId();
}
}
我不知道我是否需要包装的持久性代码在一个事务中,还是休眠可以根据@OneToMany
关系弄清楚,如果保存狗实体失败,那么整个事情应该回滚?从文档中不清楚。
我没有使用容器或框架,只是在具有JPA配置的独立Java项目中直接使用Hibernate。