Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36051
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-30 21:58
文章分类

全部博文(24)

文章存档

2014年(2)

2013年(22)

我的朋友

分类: Web开发

2013-10-31 17:11:18

1.导入包
2.写配置文件
3.编写实体类
4.注解标签 
 @Entity  :声明实体类
  @Id :实体标志符
  @GenratedValue :自增
  @oneToMany(cascade=(CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE),mappedBy="")   :mappedBy指定由哪个属性维护关系
  @ManyToOne(cascade=(CascadeType.MERGE,CascadeType.REFRESH),optional=true)   optional=true代表可选,即字段的值允许为空
  @JoinColumn(name="oder_id") :定义外键
  @table(name="username")   <指定表>
  @Column(length=10,nullable=false,name="personame") <在get方法上面添加该注解,可约束数据库中字段的长度为10,默认与数据库一致;nullable控制

非空,默认为true;name属性对应数据库中的字段名字,默认与属性名一致>:设置字段长度
 @Temporal(TemporalType.DATE):日期类型
 @Lob:声明大文本字符串(数据库生成LONGTEXT格式;也可声明存放二进制数据)
 @Transient:属性不成为持久化对象,即不成为数据库中的字段
@Basic(fetch=FetchType.LAZY):包含大文件且不需要使用时,为防止每次调用时占用过多内存。需用时再访问,访问时应确保实体管理器打开状态

(EntityManagerFactory)

5.读取数据不需要开事务,更改数据时才需要

6.枚举型的字段必须设定为非空,不能默认
7.API:

(1)保存对象
public void save(){
 EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");       //itcast对应于配置文件中的值
EntityManger em=factory.createEntityManger();
em.getTransaction().begin();   //开启事务
em.persist(new Person("传智播客"));
em.getTransaction.commit();
em.clost();
factory.close();
}
 
(2)得到对象
 public void getPerson(){
  EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
Person person=em.find(Person.class,1);   //获得person表中的第一条记录
System.out.println(person);   //打印记录
em.close();
factory.close();
}    


public void getPerson2(){
  EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
Person person=em.getReference(Person.class,1);   //获得person表中的第一条记录
System.out.println(person.getName());   //打印第一条记录中的名字
em.close();
factory.close();
}    

(3)更新对象
public void updatePerson(){
 EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
em.getTranscation().begin();  //因为要更改数据库,故需开启事务
Person person=em.find(Person.class,1);   //get();
person.setName("老张");  //将第一条记录中的name属性改为"老张"(新建状态)
em.getTranscation().commit();
em.close();
factory.close();
}


public void updatePerson2(){
 EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
em.getTranscation().begin();  //因为要更改数据库,故需开启事务
Person person=em.find(Person.class,1);   //get();
em.clear();   //把实体管理器中的所有实体变成游离状态
person.setName("老张");  //将第一条记录中的name属性改为"老张"
em.merge(person);   //用于将游离状态的实体的更新同步到数据库,更改不生效
em.getTranscation().commit();
em.close();
factory.close();
}


(4)删除对象
public void delete(){
 EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
em.getTransaction().begin();   //开启事务
Person  person=em.find(Person.class,1);
em.remove(person);   //删除
em.getTransaction().commit();
em.close();
factory.close();
}


注意导入的包,应该导入javax开头的包
(5)查询
 public void query(){
 EntityMangerFactory factory=Persisentce.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
Query query=em.createQuery("select o from Person o  where o.id=?1");   //从第一条记录开始查起
query.setParameter(1,2);  //分别对应第一个问号和id=2这条记录
List person=query.getResultList();
for(Person person:persons)
  System.out.println(person.getName());       //循环打印结果中的name值
em.close();
factory.close();
}



public void deletequery(){
 EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
em.getTranscation().begin();  //开启事务
Query query=em.createQuery("delete from Person o where o.id=?1");
query.setParameter(1,2);
query.executeUpdate();
em.getTransaction().commit();
em.close();
factory.close();
}



public void queryupdate(){
EntityMangerFactory factory=Persistence.createEntityMangerFactory("itcast");
EntityManger em=factory.createEntityManger();
em.getTransaction().begin();
Query query=em.createQuery("update Person o set o.name=:name where o.id=:id");  //另外一种方式
query.setParameter("name","xxx");   //将name的值设为xxx
query.setParameter("id",3);
query.executeUpdate();
em.getTransaction().commit();
em.close();
factory.close();
}




8.
1-m:多的一方为关系维护端。关系维护端负责外键记录的更新。关系被维护端是没有权力更新外键记录的。(一对多双向关系)
阅读(286) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:html基础

给主人留下些什么吧!~~