JPA入门之添加

上篇已经讲了JPA的基础配置方法,现在来学习如何利用JPA标准添加对象到数据库中。
首先在配置文件中配置好的数据库里面新建一个表,用于与java里面对象进行映射,这里我们随意建个student表

这里写图片描述
包括id,name,sex,score四个属性,其中id比较特殊,为主键,并且我们将它设置为自增模式。注意,用JPA标准,库里面必须要设置一个主键和java对象之间的一个属性进行映射,不然用hql语言查询就会出现问题。到这里数据库部分就完成了。接着要实现java代码部分。
首先定义一个与数据库表有映射关系的类student,这里贴上完整代码:

@Entity
@Table(name="student")
@Data
public class Student implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    private int id;
    @Column(name="name")
    private String name;    
    private String sex;
    private int score;
    public Student(){

    }
    public Student(String name,String sex,int score){
        this.name=name;
        this.sex=sex;
        this.score=score;
    }
}

@Entity指定这个类为实体类,@Table(name=”student”)指定这个类与数据库中哪个表相映射,这里指定的是student表。@Data来源于lombok包,这个注解很好的实现了set、get方法,以及重写了toString方法,省了我们很多功夫去写那些代码,值得一用,但是它本身不是JPA标准的范畴。可以看到该类实现了序列化,JPA标准规定所有实现了该标准的类都要实现序列化。@Id指定类中某个属性为主键,它和数据库表中的那个主键一一对应,并且必须得指定,否则就不能通过运行。@Column(name=”name”)指定类中哪个属性和表中的哪个字段对应,由于该类中属性的名字和表中的名字都一样,所有可以不指定,但是如果属性名和字段名不一样,则必须得指定。至此对象和数据库表的关系都设置完毕,接下来开始向数据库表中添加数据了。

新建一个client测试类,完整的代码如下:

public class Client {

    static EntityManagerFactory emf=Persistence.createEntityManagerFactory("MyJPA");

    @Test
    public void addStudent(){


        for(int i=0;i<10;i++){
            EntityManager em=emf.createEntityManager();
            EntityTransaction et=em.getTransaction();           
            et.begin();
            Student student=new Student("student"+i,"--"+i%2,i*10);
            System.out.println(student);
            em.persist(student);
            et.commit();
            em.close();
        }

    }

}
      static EntityManagerFactory emf=Persistence.createEntityManagerFactory("MyJPA");

要用到JPA,首先得读取配置信息,这句话的意思就是读取配置persistence.xml文件中配置的持久化单元的信息,然后生成一个实体管理工厂。要知道我们现在要和数据库交互,那么程序怎么知道要和哪个数据库,哪个表交互呢,所以有这个语句也不为怪。第二步,通过这个工厂取到一个实体管理器em,也就是这行代码的作用

EntityManager em=emf.createEntityManager();

然后因为要向数据库里面添加数据,所以要开启事务,这里需要注意的是,只要涉及到数据库信息变动的情况,都需要开启事务,比如增加、修改、删除,然后查询因为不涉及数据库数据的改变,所以不需要开启事务。这段代码就是开启事务:

EntityTransaction et=em.getTransaction();

有了事务后,将一个对象添加到数据库的方法,hibernate-jpa有了固定的方法,即:

et.begin();
em.persist(student);
et.commit();

这三句话将一个student对象添加到数据库中,最后添加完了过后一定要关闭实体管理器em.close(); 这里我们看到student对象并没有指定id属性,这里不需要指定,因为数据库里面我们已经将id字段定义为自增类型,所以插入一个对象,数据库会自动自增id。好了,JPA的对象添加就到这里。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值