读书人

jpa容易运用

发布时间: 2012-10-11 10:16:10 作者: rapoo

jpa简单运用

仅提供测试对应的case代码,至于实体对象的annotation注解可以自行搜索。

@Test public void simple(){//创建sessionFactoryEntityManagerFactory factory = Persistence.createEntityManagerFactory("配置中对应的名称");//创建实体管理对象EntityManager em = factory.createEntityManager();//开启事务em.getTransaction().begin();//保存数据em.persist("实体对象");//更新数据em.merge("实体对象");//删除数据em.remove("实体对象");//查找数据//方法一Person person1 = (Person)em.find(Person.class, new Person().getId());//方法二:返回的是代理对象,也就说实现了延迟加载Person person2 = (Person)em.getReference(Person.class, new Person().getId());//提交事务em.getTransaction().commit();//关闭事务em.close();//关闭sessionFactoryfactory.close();}@Test public void update(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("");EntityManager em = factory.createEntityManager();em.getTransaction().begin();Person person = em.find(Person.class, 1);//将实体状态变为游离状态em.clear();person.setName("");//将游离状态变为托管状态em.merge(person);em.getTransaction().commit();em.close();factory.close();}@Test public void query(){EntityManagerFactory factory = Persistence.createEntityManagerFactory("");EntityManager em = factory.createEntityManager();//索引参数查询Query query = em.createQuery("select p from Person p where p.name=?1");query.setParameter(1, "yoyi");//位置参数查询Query query1 = em.createQuery("select p from Person p where p.name:name");query1.setParameter("name", "yoyi");List<Person> ls = query.getResultList();Person person = (Person)query.getSingleResult();}

?

读书人网 >软件架构设计

热点推荐