Hibernate 是一个优秀的ORM框架体现在:

1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。

2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。

3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object Relation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。

4.使用Hibernate的基本流程是:配置Configuration对象、产生SessionFactory、创建session对象,启动事务,完成CRUD操作,提交事务,关闭session。

5.使用Hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件。

6.在应用Hibernate时,重点要了解Session的缓存原理,级联,延迟加载和hql查询。

首先确保Spring集成进去了,在上一篇博客中详细介绍了如何集成,以及常用的三种方式

  @Test
public void handle(){
Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
System.out.print(session);
}

上面这一个例子用来测试是否集成成功,打印一个地址则成功了

package hibernate;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.tz.entity.Student; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:config/applicationContext.xml")
public class TestSpringHibernate { @Autowired
private SessionFactory sessionFactory; //获取SessionFactory
@Test//查找数据
public void handle2(){
Session session = sessionFactory.openSession(); //获取Session
List<Student> students = session.createSQLQuery("select * from student").addEntity(Student.class).list();
for(Student student:students){
System.out.println(student.getName());
System.out.println("=========");
} }
@Test//插入数据
public void handle3(){
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction(); //开启事物
Student stu = new Student();
stu.setName("zd");
stu.setMale(1);
stu.setAge(12);
try{
session.save(stu);
ts.commit();//事物提交
}catch(HibernateException e){
e.printStackTrace();
ts.rollback();//事物回滚
}finally{
session.close(); }
}
@Test///删除数据
public void handle4(){
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
Student st = new Student();
st.setId(1); try{
session.delete(st);
ts.commit();
}catch(Exception e){
e.printStackTrace();
ts.rollback();
}finally{
session.close();
}
}
@Test //修改数据
public void handle5(){
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
Student st = new Student();
st.setId(2);
st.setName("zengda");
try{
session.update(st);
ts.commit();
}catch(HibernateException e){
e.printStackTrace();
ts.rollback();
}finally{
session.close();
}
}
}

最新文章

  1. checkBox 开关按钮
  2. 最短路径—Dijkstra算法和Floyd算法
  3. android PreferenceFragment
  4. IOS开发技巧快速生成二维码
  5. windows下MySQL更改数据库文件目录及1045,1067错误
  6. 简易nagios安装出现的问题及解决方法
  7. [视频转换] C#VideoConvert视频转换帮助类 (转载)
  8. jquery checkbox全选 获取值
  9. Retrofit 实践
  10. hadoop配置文件详解系列(一)-core-site.xml篇
  11. windows 服务器硬盘的分区
  12. jQuery中的$(window).load()与$(document).ready()以及jquery $(document).ready() 与window.onload的区别
  13. learn python the hard way习题31~40总结以及列表的扩展知识
  14. 阿里云centos 开启ipv6
  15. 设置pip的默认源
  16. linux开机启动详细流程图
  17. Maven启动代理服务器
  18. 【20181031T2】几串字符【数位DP思想+组合数】
  19. cocos2dx游戏--欢欢英雄传说--为敌人添加移动和攻击动作
  20. 使用distcp并行拷贝大数据文件

热门文章

  1. POJ1631 LIS模板
  2. RedHat Enterprise Linux7.0安装Oracle12c
  3. 【Tomcat-原】如何在Myeclipse中添加本地的Tomcat
  4. Jira 迁移工作
  5. MySQL 特殊参数
  6. RouterOS 设定NAT loopback (Hairpin NAT)回流
  7. TSubobjectPtr和C++传统指针的区别
  8. VS Code 基本介绍 和 快捷键
  9. oracle共享与专用模式的动态转换及区别(转载)
  10. spark streaming 概述