Это плохая практика, чтобы сохранить объект в базе данных в конструкторе класса? - PullRequest
0 голосов
/ 25 октября 2019

Я хочу сохранить вновь созданный объект в базе данных, используя Java и Hibernate. Для простого объекта, это плохая практика хранить его в базе данных в его конструкторе? Если так, то почему? И как мне сделать это вместо этого?

public class EnumObjType implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "CAR_ID")
  private Long CarId;

  @NotNull
  @Column(name = "NAME")
  private String name;

  public Car() {
  }

  public Car(String name, boolean persist) {
    setName(name);
    if (persist == true) {
      setCarId(DB.saveEntity(this));
    }
  }

  // getters and setters
}

DB.class (отрывок):

    public static <Obj> Long saveEntity(Obj obj) {
        Long id;
        try {
            DB.s.close();
            DB.openSession();
            DB.s.beginTransaction();            
            id = (Long) DB.s.save(obj);
            DB.s.getTransaction().commit();

        } catch (Throwable ex) {
            System.err.println("Failed to create sessionFactory object." + ex);
            throw new ExceptionInInitializerError(ex);
        }
        return id;
    }

1 Ответ

1 голос
/ 25 октября 2019
@Autowired
SessionFactory sessionFactory;

@Transactional(propagation = Propagation.REQUIRED)
public Boolean EnumObjType(EnumobjType obj) {

    boolean flag=false;
    int i  =(integer)sessionFactory.getCurrentSession().save(obj).intValue();

    if (i > 0) {
        flag = true;
    }
    return flag;


}

Всегда создавать отдельный класс Doa для сохранения объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...