在JPA中没有调用吸气剂和吸气剂

时间:2020-05-23 15:06:29

标签: java hibernate reflection

我正在使用JPA 2.1,并且从entities持久地检索database时,我看不到该实体的constructor被调用,而getters没有被调用,并且setters。如果serializationdeserializationDBJAVAgetterssetters对象到constructor对象如何发生不被称为

老师

@Entity
@Table(name="Teacher")
public class Teacher {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    int id;

    @Column
    String name;



    public Teacher(String name) {
        super();

        this.name = name;
    }

    public Teacher()
    {
        System.out.println("const");
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column
    public String getName() {
        System.out.println("get Name");
        return name;
    }

    public void setName(String name) {
        System.out.println("set Name");
        this.name = name;
    }

主要

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("persistence");
        EntityManager em1 = entityManagerFactory.createEntityManager();

        em1.getTransaction().begin();

        Teacher t = new Teacher("wick");

        em1.persist(t);

        Teacher t1= em1.find(Teacher.class, 21);


        em1.getTransaction().commit();
        em1.close();

1 个答案:

答案 0 :(得分:-1)

Hibernate和类似的库和框架通常不使用(并且不需要)获取器和设置器来访问对象的属性。 Java有几种直接检查和操作对象的方法。这称为反射。切入点通常是Java Standard API中类Class的方法。 Java中的每个类都有一个与这些类关联的实例,该实例提供了几种获取有关该类信息的方法。例如,方法getDeclaredFields返回并包含有关类中所有字段的数据的数组。如果查看Field类的文档,您会发现有几种set方法将一个对象(在其上设置了值的对象的实例)和一个值作为参数。此方法还可用于绕过private等访问修饰符。

最佳

詹斯