Hibernate的初步认识
来源:互联网 发布:知几是什么意思 编辑:程序博客网 时间:2024/06/06 00:23
这是学习java的第四个月,开始了框架的学习,先看看关于hibernate的一些基础知识吧!!!!!!!
Hibernate的简介
1、 是优秀的持久化解决方案。
2、 实现持久化的两种方式:
a) 序列化:将对象以流的形式保存在硬盘中
b) 数据库:将对象转换成数据库中的一条数据
3、 对象映射关系:ORM(ObjectRelationshipMapping)
java 数据库
类 表
对象 行/一条数据
属性 列
使用hibernate的步骤
1、 装配hibernate的jar包和配置文件(hibernate.cfg.xml)
配置文件中可以添加属性:运行的时候会在后台打印sql语句
<propertyname="show_sql">true</property>
<propertyname="format_sql">true</property>
2、 反向工程:自动生成实体类(生成实体类和.hbm.xml文件)
3、 Hibernate的方言机制,就是让所有都认识sql语句
《换数据库,代码不变》
<propertyname="dialect">
org.hibernate.dialect.MySQLDialect
</property>
初步使用hibernate编写代码
/**
* hibernate操控数据库依赖于session对象
*/
//加载配置信息,其实就是加载hibernate.cfg.xml文件
Configuration cfg =new Configuration().configure();
//创建工厂对象
SessionFactory sf =cfg.buildSessionFactory();
//创建session对象
Session session =sf.openSession();
//创建查询语句,使用HQL(Hibernate Query Language)语句
List<Users> list =session.createQuery("from Users").list();
封装工具类,实现CRUD
注意:反向的表必须有主键,如果没有主键就会创建主键类
publicclass MySession {
privatestatic Configurationcfg =new Configuration().configure();
privatestatic SessionFactorysf;
//创建线程 为了保持数据一致
privatestatic ThreadLocal<Session>tl =new ThreadLocal<Session>();
//工厂
static{
sf =cfg.buildSessionFactory();
}
protectedstatic Session getSession() {
Session session = tl.get();
if(session ==null){
session =sf.openSession();
tl.set(session);
}
returnsession;
}
}
使用封装工具
1、查询
List<Users> list = getSession().createQuery("from Users").list();
2、删除
//删除
publicstaticvoid deleteUsers(intid){
Session session = getSession();
session.beginTransaction();
//通过id查询数据
Users u = session.get(Users.class,id);
//将查到的id数据删除
session.delete(u);
session.getTransaction().commit();
}
3、添加或修改
//将添加和修改合二为一
publicstaticvoid saveOrUpdate(Usersu){
Session session = getSession();
session.beginTransaction();
//添加或者修改,如果id存在就修改,如果不存在就添加
session.saveOrUpdate(u);
session.getTransaction().commit();
}
4、模糊查询
//模糊查询
publicstatic List<Users> findLike(Stringname){
Session session = getSession();
//创建hql语句
String hql = "from Users where uname like :n";
Query q = session.createQuery(hql);
//占位赋值 如果是:x 这儿就是("x",name)
q.setString("n",name);
returnq.list();
}
5、分页查询
publicstatic List<Users> findUsers(){
Session session = getSession();
Query q = session.createQuery("from Users");
//参数为偏移量pageIndex当前页码 pageSize每页的条数
q.setFirstResult((pageIndex-1)*pageSize);
//参数为每页最大的条数
q.setMaxResults(pageSize);
returnq.list();
}
Hibernate 和 jdbc的关系
Hibernate取代了jdbc的复杂的操作(错的)
Jdbc是原生的java代码,而hibernate只是jdbc的另一种封装形式,不管代码多么的简单,并且和jdbc一点关系都没有,但是,最后的hibernate程序都会转换成jdbc来执行操作
Hibernate方言是hibernate的招牌。
Hibernate的list方法和Iterator有什么区别(面试题)
List 的
Iterator的
List的原理:查询全部的数据,发出一条sql语句,对于小数据量来说是适合的。
Iterator的原理:先查询所有的id(1条),然后根据每一个id查询匹配的对象(N条),发出N+1(1+N)条语句,对于大数据量来说Iterator是适合的。
- Hibernate的初步认识
- Hibernate框架初步认识
- hibernate初步认识
- hibernate——初步认识
- 初步认识hibernate--第一篇
- 初步认识hibernate-----第二篇
- Hibernate——初步认识
- Hibernate学习笔记<一> 初步认识Hibernate
- 指针的初步认识!
- 类的初步认识
- return的认识,初步
- checksum的初步认识
- Ajax的初步认识
- xml的初步认识
- 初步的架构认识
- 指针的初步认识
- 进程的初步认识
- VC的初步认识
- 文章标题
- 算法课程Leetcode作业第一周技术博客
- [Project] Simulate HTTP Post Request to obtain data from Web Page by using Python Scrapy Framework
- 53.Maximum Subarray
- Linux的使用
- Hibernate的初步认识
- 数组/排序,插入,查找,平均值,最值
- 机器学习——决策树算法
- 对n个数字右移k位
- assertRegex的报错
- java
- Oracle数据库sysdba、sysoper权限问题
- 机器学习实战之 k近邻算法 原理及代码实现
- 通过SWIG生成jni代码