JPA学习记录五(使用JPA加载_更新_删除对象及使用JPQL语句进行查询)

来源:互联网 发布:java 日志写入数据库 编辑:程序博客网 时间:2024/06/06 00:51

一:JPA保存对象

     事务主要用在数据的更改操作,读取数据不用事务

public void save() throws Exception  {     EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();     Person person = new Person();     Date bir=new Date();     SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");     bir=format.parse("2012-11-23");     person.setBirthday(bir);     person.setName("哈哈");     em.persist(person);     //em.persist(new Person("哈哈"));//需要在person中定义构造函数,一个无参数的和一个有参数的     em.getTransaction().commit();     em.close();     factory.close();}


二:JPA读取对象

@Test//读取事务时不用事务,只有数据更改时需要事务public void getPerson() {     EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     Person person=em.find(Person.class, 1);//find()方法,通过数据表的主键进行查找,此处是id的值     System.out.println(person.getName());     em.close();     factory.close();}

@Test//读取事务时不用事务,只有数据更改时需要事务public void getPerson() {     EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     Person person=em.find(Person.class, 1);//find()方法,通过数据表的主键进行查找,此处是id的值     System.out.println(person.getName());     em.close();     factory.close();}



三:JPA更新对象

实体状态:new 新建状态   managed 托管     游离(脱管)     删除

@Test//读取事务时不用事务,只有数据更改时需要事务public void getPerson() {     EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     Person person=em.find(Person.class, 1);//find()方法,通过数据表的主键进行查找,此处是id的值     System.out.println(person.getName());     em.close();     factory.close();}

@Testpublic void updatePerson2() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();//开启事务     Person person = em.find(Person.class, 1);//managed 托管状态     em.clear();//把实体管理器中的所有实体变成游离状态     person.setName("老散");     em.merge(person);//把游离状态的实体同步到数据库     em.getTransaction().commit();     em.close();     factory.close();    }




四:JPA删除对象

@Test//读取事务时不用事务,只有数据更改时需要事务public void delete() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();//开启事务     Person person = em.find(Person.class, 1);//managed 托管状态     em.remove(person);//删除     em.getTransaction().commit();     em.close();     factory.close();    }




五:JPQL查询数据

@Test//查询数据,面向对象所以用select o (o 对象的别名)public void query() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     //容易sql攻击select o from Person o where id="+name     Query query=em.createQuery("select o from Person o where o.id=?1");//位参数查询     query.setParameter(1, 1);     Person person=(Person) query.getSingleResult();//单结果     System.out.println(person.getName());     //多结果     List<Person> persons = query.getResultList();     for(Person persona:persons)     System.out.println(persona.getName());     em.close();     factory.close();    }



六:JPQL更新查询数据

@Test//查询数据,面向对象所以有select opublic void queryupdate() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();//开启事务     Query query=em.createQuery("update Person o  set o.name=:name  where o.id=:id");//命名参数查询     query.setParameter("name", "xxxx");     query.setParameter("id", 3);     query.executeUpdate();     em.getTransaction().commit();     em.close();     factory.close();    }


七:JPQL删除查询数据

@Test//查询数据,面向对象所以有select opublic void deletequery() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistUnitName");     EntityManager em = factory.createEntityManager();     em.getTransaction().begin();//开启事务     Query query=em.createQuery("delete o from Person o where o.id=?1");//位参数查询     query.setParameter(1, 1);     query.executeUpdate();     em.getTransaction().commit();     em.close();     factory.close();    }



源码下载:http://download.csdn.net/detail/u013030488/9835946

0 0