Я хотел бы знать, как лучше всего обрабатывать исключение, когда я пытаюсь создать и сохранить объект в базе данных.
Итак, у меня есть таблица с именем Rule с геттерами и сеттерами:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "type", nullable = false, unique = true)
private String type;
@Column(name = "hint", nullable = false)
private String hint;
@Column(name = "help", nullable = false)
private String help;
@Enumerated(EnumType.STRING)
@Column(name = "language", nullable = false)
private Language language;
@OneToMany(mappedBy = "rule")
@Column(name = "user_rule")
private Set<UserRule> user_rule;
@OneToMany
@JoinColumn(name = "rule_id")
private Set<Sentence> sentence;
И у меня есть метод create, который добавляет объект в базу данных:
public static Rule create(EntityManagerFactory factory, String type, String hint, String help, Language language) {
EntityManager em = factory.createEntityManager();
EntityTransaction transaction = null;
Rule new_rule = new Rule();
try {
transaction = em.getTransaction();
transaction.begin();
new_rule.setType(type);
new_rule.setHint(hint);
new_rule.setHelp(help);
new_rule.setLanguage(language);
em.persist(new_rule);
transaction.commit();
} catch (Exception ex) {
if (transaction != null) {
transaction.rollback();
}
throw ex;
} finally {
em.close();
}
return new_rule;
}
- Должен ли я использовать несколько catch для каждого исключения, методы которого могут вызывать блок try?
- Если мое решение - хороший способ справиться с этим, как я могу напечатать конкретное сообщение, связанное с исключением
ex
, в хорошем смысле? - Как я могу вызвать исключение в моем JUnit5 для содержимого блока
try
, чтобы проверить, возникает ли исключение (должен ли я вызывать все исключения?) - Если я передам нулевой элемент (который был установлен в nullable = false) методу
create
, как передаются ошибки или исключения (с помощью hibernate/jpa или я должен обрабатывать это самостоятельно, как обычно?)
Дайте мне знать, если у вас есть другие советы!
Заранее спасибо за вашу помощь.