您好,欢迎访问一九零五行业门户网

JPA初体验_MySQL

bitscn.com
jpa,一套相当优秀的持久化规范,开始体验。
1、我使用hibernate对jpa提供的实现,下载hibernate-release-4.1.1.final.zip。解压。
在hibernate-release-4.1.1.final/lib目录下有四个存放jar包的目录,其中
 hibernate-release-4.1.1.final/lib/jpa                   存放hibernate对jpa提供实现的jar
 hibernate-release-4.1.1.final/lib/required            存放hibernate开发所需jar
这两个目录下的所有jar是我们体验jpa所必需的。
2、新建一个java project。
2.1 导入hibernate-release-4.1.1.final/lib/jpa目录和hibernate-release-4.1.1.final/lib/required目录下得所有jar
2.2 在项目的classpath路径下建立meta-inf目录
      在meta-inf目录下建立persistence.xml文件
1 2 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
用的是mysql,请建立一个名叫jpa的数据库。无需手动建表,执行测试的时候会自动建表。
3、项目视图如下:
4、编写实体类。
1 package com.cndatacom.jpa.entity; 2 3 import javax.persistence.column; 4 import javax.persistence.entity; 5 import javax.persistence.generatedvalue; 6 import javax.persistence.id; 7 import javax.persistence.table; 8 9 @entity10 @table(name=t_user)11 public class user {12 13 /**14 * 主键15 */16 @id17 @generatedvalue18 private long id;19 20 /**21 * 名字22 */23 @column(name=name)24 private string name;25 26 /**27 * 密码28 */29 @column(name=password)30 private string password;31 32 public long getid() {33 return id;34 }35 36 public void setid(long id) {37 this.id = id;38 }39 40 public string getname() {41 return name;42 }43 44 public void setname(string name) {45 this.name = name;46 }47 48 public string getpassword() {49 return password;50 }51 52 public void setpassword(string password) {53 this.password = password;54 }55 56 }
5、编写测试类。
1 package com.cndatacom.jpa.test; 2 3 import javax.persistence.entitymanager; 4 import javax.persistence.entitymanagerfactory; 5 import javax.persistence.persistence; 6 7 import org.junit.after; 8 import org.junit.before; 9 import org.junit.test;10 11 import com.cndatacom.jpa.entity.user;12 13 14 public class testjpa {15 16 entitymanagerfactory emf = null;17 18 @before19 public void before() {20 //根据在persistence.xml中配置的persistence-unit name 创建entitymanagerfactory21 emf = persistence.createentitymanagerfactory(myjpa);22 }23 24 /**25 * 添加用户26 */27 @test28 public void adduser() {29 30 //创建一个用户31 user user = new user();32 user.setname(叶开);33 user.setpassword(yekai);34 35 //创建实体管理器对象36 entitymanager em = emf.createentitymanager();37 //开启事务38 em.gettransaction().begin();39 //持久化对象40 em.persist(user);41 //提交事务42 em.gettransaction().commit();43 //关闭entitymanager44 em.close();45 }46 47 /**48 * 修改用户49 */50 @test51 public void modifyuser() {52 entitymanager em = emf.createentitymanager();53 em.gettransaction().begin();54 //查找id为1的user55 user user = em.find(user.class, 1l);//user 的主键id为long型56 user.setname(李坏);57 //进行更新58 em.merge(user);59 em.gettransaction().commit();60 em.close();61 }62 63 /**64 * 删除用户65 */66 @test67 public void deleteuser() {68 entitymanager em = emf.createentitymanager();69 em.gettransaction().begin();70 //查找id为1的user71 user user = em.find(user.class, 1l);//user 的主键id为long型72 //进行删除73 em.remove(user);74 em.gettransaction().commit();75 em.close();76 }77 78 /**79 * 关闭entitymanagerfactory80 */81 @after82 public void after() {83 if(null != emf) {84 emf.close();85 }86 }87 88 }
6、一些说明。
@entity 将领域标注为一个实体,表示要保存到数据库中。
@table 指定在数据库中对应的表名
@id 对应的属性是表的主键
@generatedvalue 主键的产生策略,这里表示使用默认的generationtype.auto
@column 属性对应数据库表中的列,name指定列名,不写name的话,属性名和列名一致。
bitscn.com
其它类似信息

推荐信息