刚开始学习SSH框架,平时做的笔记蛮多的,就是比较杂乱无章,现在开始在这上面整理笔记。
Hibernate
大学期间时做Java课程设计的时候,那时候没有接触到这些框架,用的是JDBC的方式,写在Servlet里,先在配置文件中添加Servlet,在Servlet中写sql对数据库进行访问,然后将数据传递给JSP。
<servlet>
<servlet-name>ExactServlet</servlet-name>
<servlet-class>org.format.urlpattern.ExactServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExactServlet</servlet-name>
<url-pattern>/exact.do</url-pattern>
</servlet-mapping>
进入公司后,发现开发人员都是利用框架解决问题的,好吧,还是自己太懒了,大学期间自己也没好好去接触这些,没办法,只能现在好好学了。
Java三层结构:
- 表现层
- 业务逻辑层
- 持久层
ORM机制:
对象关系映射(Object Relation Mapping),完成对象数据到关系型数据映射的机制称为 对象-关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将Java程序中的对象自动持久化到关系数据库中。
Hibernate介绍:
Hibernate是一个基于jdbc的开源的持久化框架,是一个优秀的ORM实现,它很大的简化了dao层编码工作,Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate的配置:
Hibernate的API:
1、Configuration 配置对象,对应着配置文件
configure(String) //读取指定路径的配置文件
configure() //读取默认路径的配置文件
buildSessionFactory() //创建SessionFactory
cfg.addResource("") //添加映射文件,可以在主配置文件中不导入映射文件,在此添加
cfg.addClass(User.class) //加载指定类对应的映射文件(以类名为前缀,后缀为User.hbm.xml的同一个包下的文件),同上
2、SessionFactory session工厂
openSession() //打开一个新的session
getCurrentSession() //获取当前的session
close() //关闭session
3、Session
beginTransaction() //开始事务
getTransaction() //得到当前事务
close() //关闭事务
save(Object) //插入对象
update(Object) //更新对象
delete(Object) //删除对象
get(Class,id) //获取指定id的Class类型的对象
createQuery(String hql) //创建hql语句,返回query
4、Transaction
begin() //开始
commit() //提交
rollback() //回滚
5、Query
list() //返回的是list
uniqueResult() //返回的是唯一的结果集Object
---下面两个可用于分页操作,前者设置从第一个元素开始,后者设置最大返回多少个元素
setFirstResult(int)
setMaxResults(int)
Hibernate使用的方法:
1、hibernate会在当前的路径中搜寻hibernate.cfg.xml文件并将其读取到内存作为后继操作的基础配置
--Configuration config = new Configuration().configure();
2、获取SessionFactory(config对象根据当前的配置信息,构造SessionFactory实例)
--SessionFactory sessionFactory = config.bulidSessionFactory();
3、获得session
--Session session = sessionFactory.openSession();
4、事务
--Transaction tx = session.beginTransaction();
5、持久化操作
--session.save(user);
6、提交事务
--tx.commit();
7、关闭session
--session.close();
相关的模板代码: