`

hibernate 总结一

阅读更多
虽然现在我们用hibernate4基于注解很方便,但看了传智博客hibernate3的视频觉得老师讲的很好,所有总结下来。视频网上直接能搜到下载。
一:
以一个小例子作为驱动,讲解hibernate3的开发,hibernate需要的jar包在lib下,hibernate3,还有sql驱动
二:配置文件的含义
讲解配置文件的配置以及含义,hibernate项目po需要注意的:必须有无参构造方法,有id(可选),非final的(可选)
为啥系统能找到src下的配置文件?因为她去classpath下寻找
三:简化hibernate代码
1.hibernate推荐驱动方式  PO类---配置文件----表      开发中也很常见    表----po类----hbm配置文件
2.hibernate生成执行操作那段代码里   SessionFactory 相当于DriverManage session 相当于Connection  可以简化得到session

的步骤,写一个工具类 需要session调用  工具类不希望继承,使用final修饰   不希望被实例化  构造方法为peivate,把里面你需要

的定义为static
里面加载配置文件只需要一次,  放在static静态块中代码如下
public final class HibernateUtil{
private static SessionFactory sessionFactory;
private static Session session;
private HibernateUtil(){
}
static{
Configuration cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.openSessionFactory();
}
//sessionFactory  的get  方法  是static
public static SessionFactory getSessionFactory (){
return sessionFactory;
}
public static Session getSession (){
return sessionFactory.openSession();
}

}


4.save
  static void addObject(Object obj){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
//和persist(Object)对象区别  如果事务没开启,persist不执行,save会插入再回滚
s.save(obj);
tx.commit();
//如果有异常,会抛出并自动回滚
}finally{
if(s!=null){
s.close();
}
}
  }
四:Session 介绍
  public User getUser(id){
s = HibernateUtil.getSession();
//不用开启事务    session 相当于包含了数据的map key是类名,value是类信息,get先获取类,再根据id获取某一行
Class userClass = User.class; //类的类  反射,得到的class里有类的所有信息
User user=s.get(UserClass,id);  和load(Object,id) 和get一样的,懒加载用
return user;
}

五:对象的三种状态
1.saveOrUpdate,merge,调用merge对象还是脱管的
2.处于持久状态时   发生变化  自动提交到数据库
  处于脱管   不会自动提交  会调用update   方法  不知道对象处于瞬时还是托管   用SaveOrUpdate()  ---持久的
3.新建  是瞬时的-----session.save()  在session里是持久的-------s.close  session 关闭后是托管的
六:完善的hibernateUtil
static void Update(Object obj){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
s.update(obj);
tx.commit();
//如果有异常,会抛出并自动回滚
}finally{
if(s!=null){
s.close();
}
}
  }
static void Delete(Object obj){
Session s = null;
Transaction tx = null;
try{
s = HibernateUtil.getSession();
tx=s.beginTransaction();
s.delete(obj);
tx.commit();
//如果有异常,会抛出并自动回滚
}finally{
if(s!=null){
s.close();
}
}
  } 
static Object getById(Class  objclass,Serializable id){
Session s = null;
try{
s = HibernateUtil.getSession();
Obj o = s.get(objclass,id);
return o;
}finally{
if(s!=null){
s.close();
}
}
  }
八 关键字用反引号括起来  配置文件里
九Criteria查询方式
hql查询
static void query(String name)
Session s = null;
try{
s = HibernateUtil.getSession();
String hql = "from User as user where user.name=?";
Query query = s.createQuery(hql);
query.setString(0,name);
List<User> list = query.list();
//query.uniqueResult(); 返回object确定只有一个时候使用
//
for(User user:list){
System.out.println(user.getName);
}

}finally{
if(s!=null){
s.close();
}
}
  }
Criteria  条件查询  更面向对象,官方推荐hql,因为功能更全面
static void query(String name)
Session s = null;
try{
s = HibernateUtil.getSession();
Criteria c = s.createCriteria(User.class);
c.add(Restrictions.eq("name",name));
c.add(Restrictions.lt("birthday",new Date()));
//分页
c.setFirstResult(0);
c.setMaxResults(10);
List<User> list = c.list();
//c.uniqueResult(); 返回object确定只有一个时候使用

for(User user:list){
System.out.println(user.getName);
}

}finally{
if(s!=null){
s.close();
}
}
  }
十:
用hibernate访问数据操作
步骤:
1.设计类User
2.设计UserDao接口
3.加入hibernate.jar和其他依赖jar包
4.编写映射文件hbm,配置文件:必须参数 url name password 方言 driverclass  hbm2ddl.auto   mapping映射类
5工具类 获取session
6.实现接
分享到:
评论

相关推荐

    Hibernate知识点总结

    ### Hibernate知识点总结 #### 一、Hibernate概述 Hibernate是一个开源的ORM(Object Relational Mapping,对象关系映射)框架,用于Java应用与关系型数据库之间的交互。它通过使用描述对象和数据库之间映射的元...

    Hibernate4总结文档

    1. Hibernate配置: Hibernate的配置主要通过一个名为`hibernate.cfg.xml`的文件进行。该文件定义了与数据库的连接参数、方言、缓存策略等关键设置。例如: - `connection.driver_class`: 指定数据库驱动,如`...

    Hibernate 简单 PPT 总结

    【Hibernate 简单 PPT 总结】 Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过提供一套API和元数据,Hibernate允许开发者将业务对象直接映射到数据库表,从而避免了...

    hibernate文档总结,技术汇总,PDF版的,hibernate简明参考文档

    总结来说,Hibernate是一个强大的ORM框架,它极大地简化了Java应用的数据库操作,提高了开发效率,并提供了高级特性如缓存、事务管理等。通过深入理解和熟练使用Hibernate,开发者可以构建更高效、更易于维护的...

    hibernate学习总结文档

    Hibernate 是一个开源的对象关系映射(ORM)框架,它为 Java 开发者提供了一种在 Java 应用程序中管理关系数据库的方式。通过 ORM,Hibernate 可以将 Java 类与数据库表之间的映射关系自动化,从而简化数据访问层的...

    SSH之Hibernate总结

    SSH之Hibernate总结 SSH(Struts、Spring、Hibernate)是Java Web开发中常见的三大框架,而Hibernate作为ORM(对象关系映射)框架,是连接Java应用程序与数据库的关键组件。本总结将围绕Hibernate的核心概念、配置...

    struts2+hibernate一周小项目总结

    struts2+hibernate一周小项目总结

    jdbc_Hibernate总结

    Hibernate是一个流行的ORM(Object-Relational Mapping)框架,它为开发者提供了对JDBC的轻量级封装,简化了数据库操作。使用Hibernate,开发者可以更专注于业务逻辑,而不是底层的SQL语法。在搭建Hibernate项目时,...

    Hibernate学习笔记与总结

    **Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...

    Hibernate课程的总结

    **标题:“Hibernate课程的总结”** 在学习Hibernate框架的过程中,我们深入探讨了它在Java企业级应用中的核心地位。Hibernate作为一个强大的对象关系映射(ORM)工具,它简化了数据库与Java对象之间的交互,消除了...

    hibernate技术研究对比总结

    **HIBERNATE技术总结** Hibernate 是一个流行的 Java 应用程序框架,它提供了一种对象关系映射(ORM)解决方案,将数据库操作转化为面向对象的编程。此文档旨在研究和对比 Hibernate 技术的不同方面,帮助开发者更...

    Hibernate注解用法总结

    本文主要总结了Hibernate中常见的注解用法,涵盖了类级别和属性级别的注解,以及与主键和非主键相关的注解。 1. 类级别注解: - `@Entity`: 这个注解是必不可少的,它告诉Hibernate一个Java类是一个实体,可以映射...

    hibernate 总结 附 项目

    1. **实体(Entity)**: 在 Hibernate 中,实体是与数据库表对应的一类 Java 对象。它们通过注解或 XML 配置文件来定义数据表结构。 2. **持久化类(Persistent Class)**: 实体类需要被标记为持久化类,以便 ...

    hibernate总结练习源码

    本资源包含的"hibernate总结练习源码"提供了对Hibernate ORM框架实际应用的实例,有助于深入理解和掌握其核心概念与功能。 1. **对象关系映射(ORM)**:Hibernate 提供了一种机制,将数据库中的表映射为Java类,表...

    Hibernate总结——课程管理

    在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本教程将深入探讨如何使用Hibernate来实现一个简单的课程管理系统,涵盖多对...

    Hibernate重点总结

    Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务。在本文中,我们将深入探讨Hibernate的关键概念、配置、实体管理、查询语言以及...

    hibernate关联关系总结

    1. **一对一关联(OneToOne)** 一对一关联表示两个实体之间存在唯一的关系,例如一个用户对应一个账户。在Hibernate中,可以通过@OneToOne注解来定义这种关系,可以指定fetch属性来控制加载策略,并通过cascade...

Global site tag (gtag.js) - Google Analytics