框架技术--hibernate框架jpa使用

2014-11-24 08:17:42 · 作者: · 浏览: 0

第一步

准备jar包,官网下载即可很方便。

在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
这两个目录下的所有jar是我们体验JPA所必需的。


第二步

新建一个Java Project,导入hibernate-release-4.1.1.Final\lib\jpa目录和hibernate-release-4.1.1.Final\lib\required目录下的所有jar;导入mysql的数据库驱动包。


在项目的classpath路径下建立META-INF目录,建立persistence.xml文件

  

  
            
    
   
    
    
     
      
      
      
      
      
      
      
      
      
      
      
      
      
      
     
   
            

  

编写实体类

package com.cndatacom.jpa.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="t_user")
public class User {
    
    /**
     * 主键
     */
    @Id
    @GeneratedValue
    private Long id;
    
    /**
     * 名字
     */
    @Column(name="name")
    private String name;
    
    /**
     * 密码
     */
    @Column(name="password")
    private String password;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
}

编写测试类

package com.cndatacom.jpa.test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.cndatacom.jpa.entity.User;


public class TestJPA {
    
    EntityManagerFactory emf = null;
    
    @Before
    public void before() {
        //根据在persistence.xml中配置的persistence-unit name 创建EntityManagerFactory
        emf = Persistence.createEntityManagerFactory("myJPA");
    }
    
    /**
     * 添加用户
     */
    @Test
    public void addUser() {
        
        //创建一个用户
        User user = new User();
        user.setName("叶开");
        user.setPassword("yekai");
        
        //创建实体管理器对象
        EntityManager em = emf.createEntityManager();
        //开启事务
        em.getTransaction().begin();
        //持久化对象
        em.persist(user);
        //提交事务
        em.getTransaction().commit();
        //关闭EntityManager
        em.close();
    }
    
    /**
     * 修改用户(用户处于托管状态)
     */
    @Test
    public void modifyUser1() {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        //查找id为1的User,进行更新
        User user = em.find(User.class, 1L);//User 的主键id为Long型
        user.setName("楚留香");
        em.getTransaction().commit();
        em.close();
    }
    
    /**
     * 修改用户(用户处于游离(脱管)状态)
     */
    @Test
    public void modifyUser2() {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        //查找id为1的User,进行更新
        User user = em.find(User.class, 1L);//User 的主键id为Long型
        em.clear();//将实体管理器中的所有实体变成了游离态(脱管)
        user.setName("李寻欢");
        em.merge(user);//处于游离态的实体必须使用该方法才能更新
        em.getTransaction().commit();
        em.close();
    }
    
    
    
    /**
     * 删除用户
     */
    @Test
    public void deleteUser() {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        //查找id为1的User
        User user = em.find(User.class, 1L);//User 的主键id为Long型
        //进行删除
        em.remove(user);
        em.getTransaction().commit();
        em.close();
    }
    
    /**
     * 关闭EntityManagerFactory
     */
    @After
    public void after() {
        if(null != emf) {
            emf.close();
        }
    }

}

到此为止,jpa已经可以使用了,我们只需要执行junit测试类就可以自动生成my sql数据库中的表。

文章摘自:http://www.cnblogs.com/luxh/archive/2012/05/22/2512477.html