20130118

package com.hanqi.dao;

import static org.junit.Assert.*;
import java.util.*;
import javax.persistence.*;
import org.junit.*;

public class TestJPA {

    EntityManagerFactory entityManagerFactory = null;
    EntityManager entityManager = null;
    EntityTransaction transaction = null;
    
    @Before
    public void hider(){
        
        //1. 创建 EntitymanagerFactory
        String persistenceUnitName = "TestJPA";

        entityManagerFactory = 
                Persistence.createEntityManagerFactory(persistenceUnitName);
        
        //2. 创建 EntityManager. 类似于 Hibernate 的 SessionFactory
        entityManager = entityManagerFactory.createEntityManager();
        
        //3. 开启事务
        transaction = entityManager.getTransaction();
        transaction.begin();
        
    }
    
    @Test
    public void testJPQL(){
        
        String jpql = "from JPANews n where n.id = ?";
        
        Query q = entityManager.createQuery(jpql);
        
//        Query q = entityManager.createNamedQuery("cx");
        
        q.setParameter(1,6);        //占位符序号从1开始
        
        List<JPANews> l = q.getResultList();
        
        System.out.println("size = " + l.size());        
                
    }
    
    @Test
    public void test() {
        
        
                //数据操作
        
        
        //保存
                JPANews jn = new JPANews();
                
                jn.setTitle("标题");
                jn.setContent("内容");
                jn.setAuthor("作者");
                jn.setCreatedate(new Date());
                
//                entityManager.persist(jn);//保存
                

                JPANews jn2 = entityManager.merge(jn);//saveOrUpdate
                
                System.out.println("jn = " + jn);
                System.out.println("jn2 = " + jn2);
                
        //查找    
                //立即加载
                JPANews jpan = entityManager.find(JPANews.class,1);
                
                jpan.setTitle("新的标题");
                
                entityManager.flush();//提交语句给数据库,事务还未提交

//                System.out.println(jpan);
                
                
/*                
                //延迟加载
                JPANews jpan2 = entityManager.getReference(JPANews.class,3);
                
                System.out.println("id = " + jpan2.getId());
                System.out.println("title = " + jpan2.getTitle());
                
                
        //删除
                entityManager.remove(jpan2);//删除
                
*/            
    }

    
    @After
    public void test1()
    {

        //5. 提交事务
        transaction.commit();
        
        //6. 关闭 EntityManager
        entityManager.close();
        
        //7. 关闭 EntityManagerFactory
        entityManagerFactory.close();


    }
    
    
}
TestJPA
package com.hanqi.dao;

import java.util.Date;

import javax.persistence.*;

//@NamedQuery(name="cx",query="SELECT n.id from JPANews n where n.id = ?")
@Table(name="JPA_News")    //类与表之间的映射关系
@Entity        //实体类
public class JPANews {
    
    private Integer id;
    private String title;
    private String content;
    private Date createdate;
    private String author;
    
    

    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    
    }
    
    @GeneratedValue(strategy=GenerationType.AUTO)        //生成主键的策略
    @Id        //指定主键
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    
    
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    
    
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    
    
    @Column(name="CREATE_DATE")
    @Basic
    public Date getCreatedate() {
        return createdate;
    }
    public void setCreatedate(Date createdate) {
        this.createdate = createdate;
    }
    
    
    @Override
    @Transient
    public String toString() {
        return "JPANews [id=" + id + ", title=" + title + ", content=" + content + ", createdate=" + createdate
                + ", author=" + author + "]";
    }
    
    

}
JPANews

posted @ 2016-01-18 21:40  業&裳  阅读(180)  评论(0编辑  收藏  举报