Hibernate框架学习1:
来源:互联网 发布:mac和windows双系统 编辑:程序博客网 时间:2024/06/01 08:42
Hibernate框架学习1:
1.对象状态:
瞬时:没有和Hibernate发生任何关系,在数据库中没有任何记录,一旦JVM结束,对象也就消失。
持久:一个对象和Hibernate发生关系,有对应的session,并且在数据库中有一条记录。
托管:一个对象虽然在数据库中有记录,但其session已经关闭。
/** * @param args */public static void main(String[] args) { SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session s = sf.openSession(); s.beginTransaction(); Product p = new Product();//在数据库中还没有对应的记录,这个时候Product对象的状态是瞬时的。 p.setName("p1"); System.out.println("此时p是瞬时状态"); s.save(p);//Session的save把该对象保存在了数据库中,该对象也和Session之间产生了联系,此时状态是持久的。 System.out.println("此时p是持久状态"); s.getTransaction().commit(); s.close();//session已经关闭了,这个对象虽然在数据库中有了记录,但失去了和session的联系,状态就是托管的 System.out.println("此时p是脱管状态"); sf.close();}
}
严格来说,应该是在commit之后才算持久状态,单纯save之后,数据库中是无法查询到记录的。
2.通过ID获取一个对象:
Product p =(Product) s.get(Product.``class``, ``6``);
``System.out.println(``"id=6的产品名称是: "``+p.getName());
3.删除一条数据
``Product p =(Product) s.get(Product.``class``, ``5``);
`s.delete(p);
4.修改一条数据
`
Product p =(Product) s.get(Product.class, 6) System.out.println(p.getName()); p.setName("iphone-modified"); s.update(p);
5.使用HQL,根据name进行模糊查询:
String name = "iphone"; Query q =s.createQuery("from Product p where p.name like ?");//根据HQL创建一个Query对象,from后面使用的是类的名字Product,而非表格的名字product_ q.setString(0, "%"+name+"%");//设置参数 List<Product> ps= q.list();//Query对象的list()方法即返回查询的结果 for (Product p : ps) { System.out.println(p.getName()); }
6.使用Criteria,根据name进行模糊查询:
通过session的createCriteria创建一个Criteria 对象
Criteria.add 增加约束。 在本例中增加一个对name的模糊查询(like)
调用list()方法返回查询结果的集合
此外,Criteria还可以很方便的进行分页查询和获取总数
String name = "iphone"; Criteria c= s.createCriteria(Product.class);//创建Criteria对象 c.add(Restrictions.like("name", "%"+name+"%")); List<Product> ps = c.list(); for (Product p : ps) { System.out.println(p.getName()); }
7.使用标准SQL进行查询,比如多表联合查询使用这种方法较好。
String sql="select * from product_ p where p.name like '%"+name+"%'";//where前面的p,别名,相当于变量名,代表表 project_ Query q=s.createSQLQuery(sql); List<Object[]> list=q.list();//得到的对象都是 Object [ ] 数组对象,并把这些对象都放在list这个集合中 for(Object[] os:list){ for(Object failed:os){ System.out.print(failed+"\t"); } System.out.println(); }`
阅读全文
0 0
- hibernate框架学习(1)
- Hibernate框架学习1:
- Hibernate学习:Hibernate框架简述
- 【Hibernate框架学习】:Hibernate初识
- Hibernate框架学习(简介)
- hibernate框架学习笔记
- Hibernate框架学习(一 )
- Hibernate框架学习(二)
- Hibernate框架学习(一 )
- Hibernate框架学习(二)
- Hibernate框架学习(一 )
- Hibernate框架学习(二)
- Hibernate框架学习(一 )
- Hibernate框架学习(二)
- Hibernate框架学习(一 )
- Hibernate框架学习(二)
- Hibernate框架学习(一 )
- Hibernate框架学习(一 )
- VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
- 以关系为中心的组织设计:系统结构
- php强化练习(2)——函数
- fastjson常用使用方法
- 分冶算法--循环赛
- Hibernate框架学习1:
- 数字类型
- 锋利的jQuery学习笔记(三)————DOM对象和jQuery对象
- 浏览器渲染流水线解析(三)
- springboot之热部署及Spring JPA简单应用
- Android 第三方微博登录 sso package or sign error 解决办法
- Git版本管理使用
- JQ的几种选择器
- 表、栈、队列联系