您的位置:首页 > 其它

JPA入门之添加

2015-12-06 22:28 246 查看
上篇已经讲了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的对象添加就到这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: