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(); }
@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
- JPA学习记录五(使用JPA加载_更新_删除对象及使用JPQL语句进行查询)
- JPA之使用JPA加载_更新_删除对象
- JPA加载_删除_更新对象
- JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询
- JPA学习(五):java持久化查询语言JPQL--动态查询的使用及语法限制
- JPA 学习篇(五) 浅谈JPQL 查询时注意事项
- JPA--JPQL(五)
- EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(1)
- EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(2)
- EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(1)
- EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(2)
- JPA之使用JPQL语句操作数据库
- 使用 JPQL 和原生 SQL 查询 JPA 实体(转)
- 使用 JPQL 和原生 SQL 查询 JPA 实体
- JPA JPQL 语句
- JPA JPQL 查询、排序.....
- JPA查询语言 JPQL
- JPA JPQL 查询、排序
- AFHTTPSessionManager获取cookie的方法
- 深入理解Java和Android对象序列化以及反序列化
- 开发角色输入控制系统
- 数据库零碎要点001_数据库的4大特性(原子性_持久性_隔离性_一致性)_数据库的隔离级别(脏读_幻读_不可重复读)_mysql如何设置隔离级别
- spring mvc +spring +html放在web-inf下的注意点
- JPA学习记录五(使用JPA加载_更新_删除对象及使用JPQL语句进行查询)
- c++第五次上机实验
- Mysql语法大全
- 图的广度优先遍历
- css实现元素水平垂直居中
- Android性能优化篇
- jdk的安装,环境配置
- 强连通分量-targin-poj2186
- ZTE V5 MAX (N958St)手动重新分区教程