Hibernate入门教程01
来源:互联网 发布:如何评价胡的政绩 知乎 编辑:程序博客网 时间:2024/05/21 08:45
1、什么是Hibernate
Hibernate是一个基于java的开放源代码的持久化中间件,它对JDBC做了轻量级的封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能,java开发人员可以方便地通过Hibernate API来操纵数据库。
JavaEE EJB-->EJB容器-->JBOSS,Weblogic,WebSphereEJB有三种类型
SessionBean(会话Bean),用于封装业务逻辑
EntityBean(实体Bean),用于封装对数据库的操作
MessageDrivenBean(消息驱动Bean),封装基于消息的处理机制
2.什么是ORM技术,有何作用和优势
Object-Relation-Mapping对象关系映射,用于实现对象和关系数据库之间的映射,当应用程序需要对数据库操作时,只需要对这些对象操作即可.常用的ORM技术有很多,例如
1.Hibernate
2.iBATIS
3.JPA
4.其他.......
3.第一个实例
步骤:
1、myeclipse新建java工程,在新建的工程上右击-->myeclipse-->Add Hibernate Capabilites...导入开发需的架包
2、导入mysql驱动包
3、将主配置文件hibernate.cfg.xml添加到src下
hibernate.cfg.xml文件配置如下:
4、配置映射文件
一般命名规则:类名.hbm.xml
<class name="tarena.hibernate.Dept" table="dept">
配置数据库表对应的实体类
1) 必须配置主键映射
<id name="id" column="id" type="int">
<generator class="identity" />
</id>
2)普通字段映射配置
<property name="name" column="dept_name" type="java.lang.String" />
配置如下:
---------------------------------------------
1. 加载这主配置文件,创建 SessionFactory
SessionFactory f =
new Configuration().configure().buildSessionFactory();
2. 打开连接(Session)
Session session = f.openSession();
3. 增删改查
session.save(实体对象); 插入数据
session.get(实体类类对象, 主键值) 根据主键查询
session.update(实体对象) 修改数据
session.delete(实体对象) 根据对象内的主键值删除
4. 事务 api
增删改操作,必须启动事务
Transaction t = session.beginTrancation();
t.commit();
t.rollback();
// 获得之前启动过的 Transaction
Transaction t = session.getTrancation();
Session
------------------------------------------------------------
* 一级缓存
* 第一次查询一条数据时,会将查询到的对象,在内存中缓存
* 再次查询同一条数据时,直接内存缓存获取数据
* commit 事务时:
1. 检查缓存内对象的数据,是否更改过
* 数据在一级缓存内,存在一个副本
* 数据与副本数据进行比对
2. 如果更改过,执行 update 语句,更新数据库中的数据
3. commit
4. 数据增删改的方法:
session.save(实体对象);
session.update(实体对象);
session.delete(实体对象);
* 不会立即执行 sql 语句
* commit 时,才会执行
* commit 对之前执行的数据操作,会进行优化
* 会决定是否要执行一个 sql 语句
* 会决定sql语句执行的顺序
5. commit 之前,先执行一些数据操作
session.flush()
* 相同主键的数据,只能缓存一个对象
* 清除一级缓存内的对象
session.evict(实体对象);
session.clear(); // 清空一级缓存
hibernate的一个工具包:HibernateUtil
package tarena.hibernate;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
public class HibernateUtil {
private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static SessionFactory sessionFactory;
static{
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
Session session = threadLocal.get();
if(session == null){
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void closeSession(){
Session session = threadLocal.get();
if(session == null) return;
session.close();
threadLocal.remove();
}
public static void begin(){
Session session = threadLocal.get();
if(session == null) return;
session.beginTransaction();
}
public static void commit(){
Session session = threadLocal.get();
if(session == null) return;
session.getTransaction().commit();
}
public static void rollback(){
Session session = threadLocal.get();
if(session == null) return;
session.getTransaction().rollback();
}
}
- Hibernate入门教程01
- Hibernate入门教程
- Hibernate入门教程
- Hibernate入门教程
- Hibernate入门教程
- Hibernate 入门教程
- hibernate官方入门教程 (转载)
- Hibernate入门教程1
- NetBeans + Struts + Hibernate 入门教程
- hibernate官方入门教程
- Hibernate快速入门教程(1)
- Hibernate快速入门教程(2)
- hibernate官方入门教程 (转载)
- hibernate官方入门教程 (转载)
- hibernate官方入门教程 (转载)
- Hibernate 入门教程(总结)
- hibernate简单入门教程
- hibernate官方入门教程
- 【转】SQL注入漏洞全接触--进阶篇
- TOMCAT 6.0配置方法
- 编译directshow的示例程序baseclasses
- base-tar
- 统计学的一些经典教材
- Hibernate入门教程01
- 【转】SQL注入漏洞全接触--高级篇
- C++类库介绍
- ASP.NET MVC 3新特性
- 增加纹理,用box2d制作真实的爆炸效果
- 【转】SQL注入法攻击一日通
- 经典SQL语句汇总-2
- 【转】跨站式SQL注入技巧
- AJAx 具体案例。