一、hibernate框架介绍如下

1.框架=模板

2.Hibernate是对象模型与关系数据库模型之间的桥梁

3.hibernate持久化概念

什么是ORM

ORM是对象关系映射,是一种数据持久化操作(增删改查),

它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过javabean对象去操作数据库中数据.

4.hiberante概念

hibernate就是采用orm对象关系映射技术的持久化开发框架.

5.hibernate优缺点及使用场合

1.优点

hibernate很强大,减少了传统jdbc链接数据库的代码,提供了持久化代码的开发速度,降低了维护成本.

hibernate支持很多面向对象的特性.如组合,继承,多态等.使得开发人员必须在面向业务领域的对象模型和面向数据库的关系数据库模型之间来回切换,方便开发人员进行面向对象的设计和开发.

可移植性好.系统不会绑定在某个特定的关系型数据上,对于系统更换数据库,通常只需要修改hibernate配置文件即可正常运行

hibernate框架是开源免费的,可以在需要时研究源代码,改写源代码,进行功能定制,具有可扩展性.

2.缺点

不适合以数据为中心大量使用存储过程的应用.

大规模的批量插入,修改和删除不适用于hibernate

3.适用场合

hibernate适用于大中型项目

hibernate不适用于小型项目,

hibernate不适合用于关系模型设计不合理,不规范的系统

6.hibernate框架搭建步骤:

1.下载需要的jar包

(1)slf4j-log4j12-1.5.8.jar

hibernate日志记录文件,在控制台打印系统内部完成操作的一些结果,比如hiberante给你拼装的sql,和hibernate启动信息

(2)antlr-2.7.6.jar

语法分析器

(3)commons-collections-3.1.jar

各种集合类和集合工具类的封装

(4) commons-dbcp.jar

(5)commons-dbcp-1.2.1.jar

(6) commons-lang-1.0.1.jar

(7)commons-logging-1.0.4.jar

(8)commons-pool-1.2.jar

数据池

(9)dom4j-1.6.1.jar

XML的读写

(10)hibernate3.jar

hiberante核心文件封装了hibernate使用的接口和类

(11)javassist-3.9.0.GA.jar

分析,编辑和创建java字节码的类库

(12)jta.jar

java事务API

(13)log4j-1.2.8.jar

日志操作

(14)slf4j-api-1.5.8.jar

2.将上述jar文件和oracle的jar文件加载到web项目中

3.在src下创建hibernate主配置文件hiberante.cfg.xml

该配置文件主要用于配置数据库链接和hibernate运行时所需要的各种特性.

该文件要在web项目的src根目录下创建

步骤:

选中src

new

xml(Basic Template)

输入名字:hibernate.cfg.xml

选择 create xml file from a DTD file

选择Select XML Catalog entry

在XML Catalog列表框中找到 "-//Hibernate/Hibernate Configuration DTD 3.0 // EN"

常用参数说明

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<!-- session会话工厂配置数据源 -->
<session-factory>
<!-- 1.链接数据库的driver -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 2.链接数据库的url -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
<!-- 3.链接数据库的用户名 -->
<property name="connection.username">scott</property>
<!-- 4.链接数据库的密码 -->
<property name="connection.password">tiger</property>
<!-- 5.配置数据库的方言 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 6.配置是否在控制台显示hibernate封装的sql -->
<property name="show_sql">true</property>
<!-- 7.sql语句格式化 -->
<property name="format_sql">true</property>
</session-factory>
</hibernate-configuration>

二、使用hibernate实现全套正删改查

2.1 创建项目Hibernate_Part1并在项目的WebRoot下的WEB-INF下的lib文件下加入如下jar文件:

 slf4j-log4j12-1.5.8.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
commons-dbcp.jar
commons-dbcp-1.2.1.jar
commons-lang-1.0.1.jar
commons-logging-1.0.4.jar
commons-pool-1.2.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jta.jar
log4j-1.2.8.jar
slf4j-api-1.5.8.jar

hibernate框架所需要的jar

2.2 在项目的src下创建hibernate.cfg.xml主配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
<!-- oracle驱动 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 连接 数据库url-->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
<!-- 连接数据库用户名 -->
<property name="connection.username">scott</property>
<!-- 连接数据库密码 -->
<property name="connection.password">tiger</property>
<!-- 数据库 方言-->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 显示sql语句 -->
<property name="show_sql">true</property>
<!-- sql语句格式化 -->
<property name="format_sql">true</property> <!--注册映射文件 -->
<mapping resource="com/entity/Dept.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

2.3 在src下的com.entity包下创建Dept.java文件

 package com.entity;

 public class Dept{

 private Integer  deptno;
private String deptname;
private String loc; public Dept() {
} public Dept(Integer deptno, String deptname, String loc) {
this.deptno = deptno;
this.deptname = deptname;
this.loc = loc;
} public Integer getDeptno() {
return deptno;
} public void setDeptno(Integer deptno) {
this.deptno = deptno;
} public String getDeptname() {
return deptname;
} public void setDeptname(String deptname) {
this.deptname = deptname;
} public String getLoc() {
return loc;
} public void setLoc(String loc) {
this.loc = loc;
} @Override
public String toString() {
return "Dept [deptname=" + deptname + ", deptno=" + deptno + ", loc=" + loc
+ "]";
} }

Dept.java

2.4 在src下的com.entity包下创建Dept.hbm.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.entity.Dept" table="DEPT">
<id name="deptno" type="java.lang.Integer" column="DEPTNO">
<generator class="assigned"/>
</id>
<property name="deptname" type="java.lang.String" column="DNAME"/>
<property name="loc" type="java.lang.String" column="LOC"/>
</class>
</hibernate-mapping>

Dept.hbm.xml

2.5 在src下的com.dao包下创建DeptDao.java文件

 package com.dao;
import java.io.Serializable; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.entity.Dept; public class DeptDao implements Serializable{
/**
*
*/
private static final long serialVersionUID = 7318695909579058942L; /**
* 1.get方法查询当查不到返回null
* 关闭session能读取到
* @param id
*/
public static void getDept(Integer id){
//1.读取配置文件
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); //2.创建Session工厂
SessionFactory sessionFactory=configuration.buildSessionFactory(); //3.打开Session
Session session=sessionFactory.openSession(); //4.开启事务(查询不需要)
Transaction tx=session.beginTransaction(); //5.执行操作
Dept dept=(Dept) session.get(Dept.class, id);
if(dept!=null){
System.out.println("查到了");
System.out.println(dept); }else{
System.out.println("没查到");
} //6.提交事务(查询不需要)
tx.commit(); //7.关闭session
session.close(); } /**
* 2.load方法查询当查不到报出异常
* 关闭session读取不到,报出异常
* @param id
*/
public static void loadDept(Integer id){
//1.读取配置文件
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); //2.创建Session工厂
SessionFactory sessionFactory=configuration.buildSessionFactory(); //3.打开Session
Session session=sessionFactory.openSession(); //4.开启事务(查询不需要)
Transaction tx=session.beginTransaction(); //5.执行操作
Dept dept=(Dept) session.load(Dept.class, id); //6.提交事务(查询不需要)
tx.commit(); System.out.println(dept); //7.关闭session
session.close(); } /**
* 添加
* @param dept
*/
public static void saveDept(Dept dept){
//1.读取配置文件
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); //2.创建Session工厂
SessionFactory sessionFactory=configuration.buildSessionFactory(); //3.打开Session
Session session=sessionFactory.openSession(); //4.开启事务
Transaction tx=session.beginTransaction(); //5.执行操作
session.save(dept); //6.提交事务
tx.commit(); System.out.println("插入成功"); //7.关闭session
session.close();
} /**
* 修改1
* 先查询单条再次修改
* @param dept
*/
public static void updateDept(Integer id){
//1.读取配置文件
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); //2.创建Session工厂
SessionFactory sessionFactory=configuration.buildSessionFactory(); //3.打开Session
Session session=sessionFactory.openSession(); //4.开启事务
Transaction tx=session.beginTransaction(); //5.执行操作
//查询
Dept dept=(Dept) session.get(Dept.class, id); //修改
dept.setDeptname("不知道");
//6.提交事务
tx.commit(); System.out.println("修改成功"); //7.关闭session
session.close();
} /**
* 删除对象
* 先查询单条再删除
* @param dept
*/
public static void deleteDept(Integer id){
//1.读取配置文件
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); //2.创建Session工厂
SessionFactory sessionFactory=configuration.buildSessionFactory(); //3.打开Session
Session session=sessionFactory.openSession(); //4.开启事务
Transaction tx=session.beginTransaction(); //5.执行操作
//查询
Dept dept=(Dept) session.get(Dept.class, id); //删除对象
session.delete(dept); //6.提交事务
tx.commit(); System.out.println("删除成功"); //7.关闭session
session.close();
} public static void main(String[] args) {
// getDept(10);
// loadDept(10);
// Dept dept=new Dept(1, "TB07", "青鸟学社");
// saveDept(dept);
// updateDept(1);
// getDept(1);
deleteDept(1);
getDept(1);
} }

DeptDao.java

2.6 运行结果自己试试看就知道了

三、使用hibernate的工具类实现全套正删改查

2.1 创建项目Hibernate_Part1并在项目的WebRoot下的WEB-INF下的lib文件下加入如下jar文件:

hibernate框架所需要的jar

2.2 在项目的src下创建hibernate.cfg.xml主配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" >
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
<property name="connection.username">holly</property>
<property name="connection.password">sys</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property> <mapping resource="com/entity/Teacher.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

2.3 在src下的com.entity包下创建Teacher.java文件

 package com.entity;

 public class Teacher {
private int id;
private String name; public Teacher() {
} public Teacher( String name) {
this.name = name;
}
public Teacher(int id, String name) {
this.id = id;
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
} }

Teacher.java

2.4 在src下的com.entity包下创建Teacher.hbm.xml文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.entity.Teacher" table="TEACHER">
<id name="id" type="java.lang.Integer" column="ID">
<generator class="sequence">
<param name="sequence">seq_teacher</param>
</generator>
</id> <property name="name" type="java.lang.String" column="NAME"/>
</class>
</hibernate-mapping>

Teacher.hbm.xml

2.5 在src下的com.util包下创建HibernateUtil.java文件

 package com.util;

 import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtil {
private static ThreadLocal<Session> thread=new ThreadLocal<Session>();
private static Configuration config=null;
private static SessionFactory factory=null; static{
try {
config=new Configuration().configure("/hibernate.cfg.xml");
factory=config.buildSessionFactory();
} catch (HibernateException e) {
System.out.println("读取配置文件失败");
e.printStackTrace();
}
} public static Session getSession(){
Session session=thread.get();
if(session==null){
session=factory.openSession();
thread.set(session);
}
return session; } public static void closeSession(){
Session session=thread.get();
thread.set(null);
session.close();
}
}

HibernateUtil.java

2.6 在src下的com.dao包下创建TeacherDao.java文件

 package com.dao;

 import org.hibernate.Session;
import org.hibernate.Transaction; import com.entity.Teacher;
import com.util.HibernateUtil; public class TeacherDao {
public static void main(String[] args) {
Teacher teacher=new Teacher(2,"死猪投资2");
//insertTeacher(teacher);
updateTeacher(teacher);
getTeacher(2); } private static void updateTeacher(Teacher teacher) {
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.merge(teacher);
tx.commit();
System.out.println("修改成功");
HibernateUtil.closeSession(); } private static void getTeacher(int id) {
Session session=HibernateUtil.getSession();
Teacher teacher=(Teacher) session.get(Teacher.class, id);
System.out.println(teacher);
HibernateUtil.closeSession();
} private static void insertTeacher(Teacher teacher) {
Session session=HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
session.save(teacher);
tx.commit();
System.out.println("保存成功");
HibernateUtil.closeSession();
} }

TeacherDao.java

2.7 运行结果自己试试看就知道了

2、hibernate七步走完成增删改查的更多相关文章

  1. Hibernate通过createSQLQuery( )方法实现增删改查

    一.项目结构 二.hibernate核心配置文件:   hibernate.cfg.xm <?xml version="1.0" encoding="UTF-8&q ...

  2. hibernate对单表的增删改查

    ORM: 对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping) 实现对单表的增删改查 向区域表中增加数据: 第一步: 新建一个Da ...

  3. Hibernate3回顾-5-简单介绍Hibernate session对数据的增删改查

    5. Hibernate对数据的增删改查 5.1Hibernate加载数据 两种:get().load() 一. Session.get(Class arg0, Serializable arg1)方 ...

  4. Hibernate之API初识及增删改查实现

    声明:关于hibernate的学习.非常大一部分东西都是概念性的. 大家最好手里都有一份学习资料,在我的博文中.我不会把书本上的概念一类的东西搬过来.那没有不论什么意义.关于hibernate的学习, ...

  5. hibernate基本配置与简单增删改查

    ORM(Object Relation Mapping)是对象关系映射,是一个思想,它的作用是在关系数据库与对象之间做一个自动映射,将数据库中的表格映射到一个类,也就是持久化类,数据表中每行映射为对象 ...

  6. hibernate与struts框架实现增删改查

    这里配置hibernate与struts不再过多赘述,配置搭建前文已经详细讲解,配置如下: hibernate.hbm.xml配置: <?xml version="1.0" ...

  7. Spring + Struts + Hibernate + Bootstrap-table 实现分页和增删改查

    1.bootstrap界面效果图: 2.Teacher实体类 public class Teacher { private int id; private String name; private S ...

  8. HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good(转)

    Spring+Hibernate两种方法实现增删改查 首先,定义一个Customer的bean类,设置好Customer.hbm.xml文件.再定义好一个Dao接口.准备好一个jdbc.propert ...

  9. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

随机推荐

  1. Ubuntu16.04删除客人会话

    1.按下 Ctrl+Alt+T - 打开终端 2.输入以下指令: sudo gedit /etc/lightdm/lightdm.conf 3.源代码之后添加如下代码,然后保存.关闭,重启电脑即可. ...

  2. swift3 循环滚动视图 自适应横竖屏 reload数据源

    一句话创建banner图,可时时刷新 用到了 SnapKit.SDWebImage两个第三方库 实现步骤------------------------------------------------ ...

  3. 效果网址http://sc.chinaz.com/tag_jiaoben/tupianlunbo.html

    http://sc.chinaz.com/tag_jiaoben/tupianlunbo.html

  4. ORACLE 使用sqluldr2和sqlldr进行导入导出

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入. 简介: Sqluldr2 ...

  5. FZU 2243 Daxia like uber

    枚举,最短路. 求出5个点出发的最短路,然后枚举一下这些点之间走的顺序. #pragma comment(linker, "/STACK:1024000000,1024000000" ...

  6. ps遇到的问题及笔记

    1. ps软件图层面板中不显示缩略图 打开软件后,任意打开一个文件,再打开图层面板(直接按F7也可),点图层面板右上角的小三角后有一个新的面板出现,点下面的"面板选项"弹出一个面板 ...

  7. Nginx redirect

    if ($host != 'www.xxxxx.com' ) { rewrite ^/(.*)$ http://www.xxxx.com/$1 permanent; }

  8. IIS 7如何实现http重定向https

    转自[http://blog.csdn.net/xuhuojun/article/details/6137154] 在不少的企业当中,网站设计出于安全的考虑使用了https协议,但同时公司也开放了80 ...

  9. 关于PC端与手机端随着手指移动图片位置放生变化的拖拽事件

    当按下鼠标时,图片随鼠标移动松开时图片回到原位 drag("div_id") function drag(node_id){ var node = document.getElem ...

  10. Windows Server 2008 如何在IIS中添加MIME类型

    用户可以通过使用MIME以设置服务器传送多媒体文件,如声音和视频等.MIME是一种技术规范,现在可以用于浏览器上,传送可以供浏览器识别的信息 如果我们的网站提供下载服务,有时传上去的文件比如 xxx. ...