• 技术文章 >数据库 >mysql教程

    JPA初体验_MySQL

    2016-06-01 13:49:00原创521
    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
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐: 下载
    上一篇:Mysql使用大全-从基础到存储过程_MySQL 下一篇:count(*) 和count(字段名)的区别_MySQL
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• mysql中pid文件丢失怎么办• mysql多个条件怎么查询• mysql怎么查询慢的sql语句• mysql启动报错1067怎么办• mysql删除主键的语句是什么
    1/1

    PHP中文网