JPA---CRUD操作
来源:互联网 发布:nginx 子域名过滤 编辑:程序博客网 时间:2024/05/16 18:10
对象的四种状态
1. 瞬时状态(new)-----刚New出来的对象
2. 托管状态(managed)----被entitymanager管理的状态,数据更新后放在JDBC的patch处理中,和数据库同步
3. 游离状态(脱管)--------和数据库不同步,数据更新后数据库无记录
4. 删除状态(delete)
保存
@Test public void save(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
em.getTransaction().begin();
em.persist(new Person("yjj",new Date()));
//em.persist()=em.save(
em.getTransaction().commit();
em.close();
factory.close();
}
查询(按id)
1. EntityManager.find()-----类似与session.get()方法
@Test
public void findById1(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
Person person=em.find(Person.class, 1);
System.out.println(person.getName());
em.close();
// System.out.println(person.getName());
entityManager关闭后,此时也可以从缓存中访问
factory.close();
}
2. EntityManager.getReference()---类似与session.load(),有lazy问题
@Test
public void findById2(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
Person person=em.getReference(Person.class, 1);
System.out.println(person.getName());
em.close(); //em关闭后,println语句会throw exception
factory.close();
}
更新
@Test
public void updatePerson1(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
em.getTransaction().begin();
// Person person=em.getReference(Person.class, 1);
// person.getName();
Person person=em.find(Person.class, 1);
person.setName("yjj");
//此时对象出入托管状态,和db同步,setName()会mapping到db中
em.getTransaction().commit();
em.close();
factory.close();
}
@Test
public void updatePerson2(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
em.getTransaction().begin();
// Person person=em.getReference(Person.class, 1);
// person.getName();
Person person=em.find(Person.class, 1);
em.clear();
//em.clear()表示将entityManager中管理的所有实体bean变成游离状态,
person.setName("datou");
//此时对象和db不同步,setName不会反应到db中
em.merge(person);
//merge()方法用于将游离状态对象和db同步
em.getTransaction().commit();
em.close();
factory.close();
}
4删除(delete)
@Test
public void deletePerson(){
EntityManagerFactory factory=Persistence.createEntityManagerFactory("yjj");
EntityManager em=factory.createEntityManager();
em.getTransaction().begin();
// Person person=em.getReference(Person.class, 1);
// person.getName();
Person person=em.find(Person.class, 1);
em.remove(person);
// em.clear();
// person.setName("datou");
// em.merge(person);
em.getTransaction().commit();
em.close();
factory.close();
}
- JPA---CRUD操作
- 传智播客--JPA的CRUD操作,映射实体
- JPA的CRUD操作,映射实体
- EJB+JPA演示实体类基本操作CRUD的实现
- jpa对单个实体bean的crud操作
- jpa入门之环境搭建和CRUD基本操作
- jpa入门之环境搭建和CRUD基本操作
- jpa入门之环境搭建和CRUD基本操作
- Spring+Jersey+JPA+Hibernate+MySQL实现CRUD操作案例
- EJB+JPA演示实体类基本操作CRUD的实现
- EJB+JPA CRUD实现
- JPA实现的CRUD
- JPA、JTA、JMS、CRUD
- JPA系列之CRUD
- crud操作
- 【名词】JPA、JTA、JMS、CRUD
- 基于JPA的CRUD(OneToMany)
- 【名词】JPA、JTA、JMS、CRUD
- wine
- memmove、memcpy和memccpy简介
- 技术管理中常见的几个问题
- javascript操作xml生成树形菜单
- 设计师的发言权
- JPA---CRUD操作
- php开源项目
- 泛型的工具类
- March 19th Friday 2010
- JS中的splice()方法
- Javascript Date类型转换为字符串
- GridView绑定radiobutton以后实现唯一选择,互斥
- Creating a Singleton Instance
- 《高性能网站建设指南-前端工程师技能精髓》-读书笔记1(减少 HTTP 请求 )