JPA环境搭建和使用

1、我们为什么要用JPA

JPA是Sun官方提出的Java持久化规范,JPA不是一种新的ORM框架,不是一套产品,JPA只是一套规范,他的出现只是用于规范现有的ORM技术,他不能取代现有的Hibernate,TopLink等ORM框架。相反,在采用JPA开发时,我们仍将使用到这些ORM框架,只是此时开发出来的应用不再依赖于某个持久化提供商,应用可以在不修改代码的情况下在任何JPA环境下运行,真正做到低耦合,可扩展的程序设计。

2、JPA的配置环境搭建

配置JPA的运行环境,导入Hibernate关于JPA的实现jar包,首先我们需要去下载HIbernate的jar包。

第一个包是Hibernate的核心包,第二个Hibernate对JPA规范的封装实现的一个包,首先我们解压第一个压缩包。

把hibernate3.jar以及hibernate3.jar需要使用到了第三方的lib目录下的所有jar包复制到工程的lib下。然后解压第二压缩包。

把hibernate-entitymanager.jar以及lib目录下的所有jar包复制工程下,最后把数据库的驱动jar包复制到工程下,到目前为止,jpa的环境基本已经搭建完毕。

3、创建JPA的配置文件

在工程的src目录下创建一个META-INF文件夹,在META-INF文件下创建一个JPA配置文件(persistence.xml),内容如下:

	
<?xml version="1.0"?>
 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
   <persistence-unit name="user" transaction-type="RESOURCE_LOCAL">
     <properties>
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
       <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
       <property name="hibernate.connection.username" value="root"/>
       <property name="hibernate.connection.password" value="123456"/>
       <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate"/>
       <property name="hibernate.show_sql" value="true"/>
       <property name="hibernate.hbm2ddl.auto" value="update"/>
     </properties>
   </persistence-unit>
 </persistence>

配置文件中的<persistence-unit><persistence-unit/>表示持久化单元,代表一堆实体bean的集合,我们叫他们做实体bean单元,其中,transaction-type="RESOURCE_LOCAL "表示事务类型,RESOURCE_LOCAL表示本地事务,如果使用全局事务就用JTA。其他的配置属性基本上和Hibernate数据源的配置文件相同。

4、创建数据实体Bean

根据JPA规范,映射的数据可以根据注解的方式来书写,如果当前类表示一个实例bean,需要加上@Entity注解。每个实体bean都要有个实体标识属性,通过@Id表示主键,可以标识在属性的get方法前面,也可以标识在字段上面。@GeneratedValue表示主键的生成策略,基本的策略有:

  • GenerationType.AUTO: JPA实现产品自动灵活的选择合适的策略,是默认选项,可以表示自增。
  • IDENTITY:明确表示使用自增,Oracle数据库不支持。
  • SEQUENCE: 通过序列产生主键,通过@SequenceGenerator注解指定序列名,MySql不支持这种方式,实例代码:
	
import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
     
 @Entity
 public class Person {
     @Id
     @GeneratedValue(strategy=GenerationType.AUTO)
     private Integer id;
     @Column(length=10,nullable=false,name="personname")
     private String name;
     public Person(){}
     public Person(String name) {
         this.name = name;
     }
     public Integer getId() {
         return id;
     }
     public void setId(Integer id) {
         this.id = id;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
 }

5、创建单元测试进行数据保存测试:

创建一个Junit测试类,测试方法如下:

	
@Test
     public void savePerson(){
         EntityManagerFactory factory=Persistence.createEntityManagerFactory("user");
         EntityManager em=factory.createEntityManager();
         em.getTransaction().begin();
         Person p=new Person();
         p.setName("zhangsan");
           em.persist(p);
         em.getTransaction().commit();
         em.close();
         factory.close();
     }

如果测试通过,在数据库生成了一张person表并且生成了一条数据,那么表示JPA环境已经搭建成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值