博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2、hibernate七步走完成增删改查
阅读量:4344 次
发布时间:2019-06-07

本文共 13761 字,大约阅读时间需要 45 分钟。

一、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"

  常用参数说明

  

1 
2 3
4
5
6
7
oracle.jdbc.driver.OracleDriver
8
9
jdbc:oracle:thin:@127.0.0.1:1521:orcl
10
11
scott
12
13
tiger
14
15
org.hibernate.dialect.Oracle10gDialect
16
17
true
18
19
true
20
21

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

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

 

1 slf4j-log4j12-1.5.8.jar 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.jar10 hibernate3.jar11 javassist-3.9.0.GA.jar12 jta.jar13 log4j-1.2.8.jar14 slf4j-api-1.5.8.jar
hibernate框架所需要的jar

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

1 
2 3
4
5
6
oracle.jdbc.driver.OracleDriver
7
8
jdbc:oracle:thin:@127.0.0.1:1521:orcl
9
10
scott
11
12
tiger
13
14
org.hibernate.dialect.Oracle10gDialect
15
16
true
17
18
true
19 20
21
22
23
hibernate.cfg.xml

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

1 package com.entity; 2  3  4 public class Dept{ 5   6 private Integer  deptno; 7    private String deptname; 8    private String loc; 9    10 public Dept() {11 }12 13 public Dept(Integer deptno, String deptname, String loc) {14     this.deptno = deptno;15     this.deptname = deptname;16     this.loc = loc;17 }18 19 public Integer getDeptno() {20     return deptno;21 }22 23 public void setDeptno(Integer deptno) {24     this.deptno = deptno;25 }26 27 public String getDeptname() {28     return deptname;29 }30 31 public void setDeptname(String deptname) {32     this.deptname = deptname;33 }34 35 public String getLoc() {36     return loc;37 }38 39 public void setLoc(String loc) {40     this.loc = loc;41 }42 43 @Override44 public String toString() {45     return "Dept [deptname=" + deptname + ", deptno=" + deptno + ", loc=" + loc46             + "]";47 }48 49    50 }
Dept.java

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

1 
2 3
4
5
6
7
8
9
10
11
Dept.hbm.xml

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

1 package com.dao;  2 import java.io.Serializable;  3   4 import org.hibernate.Session;  5 import org.hibernate.SessionFactory;  6 import org.hibernate.Transaction;  7 import org.hibernate.cfg.Configuration;  8   9 import com.entity.Dept; 10  11 public class DeptDao implements Serializable{ 12     /** 13      *  14      */ 15     private static final long serialVersionUID = 7318695909579058942L; 16  17  18     /** 19      * 1.get方法查询当查不到返回null 20      * 关闭session能读取到 21      * @param id 22      */ 23     public static void getDept(Integer id){ 24         //1.读取配置文件 25         Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); 26          27         //2.创建Session工厂 28         SessionFactory sessionFactory=configuration.buildSessionFactory(); 29          30         //3.打开Session 31         Session session=sessionFactory.openSession(); 32          33         //4.开启事务(查询不需要) 34         Transaction tx=session.beginTransaction(); 35          36         //5.执行操作 37         Dept dept=(Dept) session.get(Dept.class, id); 38         if(dept!=null){ 39             System.out.println("查到了"); 40                System.out.println(dept); 41              42         }else{ 43             System.out.println("没查到"); 44         } 45          46          //6.提交事务(查询不需要) 47         tx.commit(); 48         49          50         //7.关闭session 51         session.close(); 52       53         54          55          56     } 57      58     /** 59      * 2.load方法查询当查不到报出异常 60      * 关闭session读取不到,报出异常 61      * @param id 62      */ 63     public static void loadDept(Integer id){ 64         //1.读取配置文件 65         Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); 66          67         //2.创建Session工厂 68         SessionFactory sessionFactory=configuration.buildSessionFactory(); 69          70         //3.打开Session 71         Session session=sessionFactory.openSession(); 72          73         //4.开启事务(查询不需要) 74         Transaction tx=session.beginTransaction(); 75          76         //5.执行操作 77         Dept dept=(Dept) session.load(Dept.class, id); 78          79          //6.提交事务(查询不需要) 80         tx.commit(); 81  82         System.out.println(dept); 83          84         //7.关闭session 85         session.close(); 86          87     } 88      89     /** 90      * 添加 91      * @param dept 92      */ 93     public static void saveDept(Dept dept){ 94         //1.读取配置文件 95         Configuration configuration=new Configuration().configure("/hibernate.cfg.xml"); 96          97         //2.创建Session工厂 98         SessionFactory sessionFactory=configuration.buildSessionFactory(); 99         100         //3.打开Session101         Session session=sessionFactory.openSession();102         103         //4.开启事务104         Transaction tx=session.beginTransaction();105         106         //5.执行操作107          session.save(dept);108          109         110          //6.提交事务111          tx.commit();112 113          System.out.println("插入成功");114         115         //7.关闭session116         session.close();117     }118     119     /**120      * 修改1121      * 先查询单条再次修改122      * @param dept123      */124     public static void updateDept(Integer id){125         //1.读取配置文件126         Configuration configuration=new Configuration().configure("/hibernate.cfg.xml");127         128         //2.创建Session工厂129         SessionFactory sessionFactory=configuration.buildSessionFactory();130         131         //3.打开Session132         Session session=sessionFactory.openSession();133         134         //4.开启事务135         Transaction tx=session.beginTransaction();136         137         //5.执行操作138         //查询139          Dept dept=(Dept) session.get(Dept.class, id);140         141          //修改142          dept.setDeptname("不知道");143          //6.提交事务144          tx.commit();145 146          System.out.println("修改成功");147         148         //7.关闭session149         session.close();150     }151     152 153     /**154      * 删除对象155      * 先查询单条再删除156      * @param dept157      */158     public static void deleteDept(Integer id){159         //1.读取配置文件160         Configuration configuration=new Configuration().configure("/hibernate.cfg.xml");161         162         //2.创建Session工厂163         SessionFactory sessionFactory=configuration.buildSessionFactory();164         165         //3.打开Session166         Session session=sessionFactory.openSession();167         168         //4.开启事务169         Transaction tx=session.beginTransaction();170         171         //5.执行操作172         //查询173          Dept dept=(Dept) session.get(Dept.class, id);174         175          //删除对象176          session.delete(dept);177          178          //6.提交事务179          tx.commit();180 181          System.out.println("删除成功");182         183         //7.关闭session184         session.close();185     }186 187     public static void main(String[] args) {188 //        getDept(10);189 //        loadDept(10);190 //        Dept dept=new Dept(1, "TB07", "青鸟学社");191 //        saveDept(dept);192 //        updateDept(1);193 //        getDept(1);194         deleteDept(1);195         getDept(1);196     }197     198 199 }
DeptDao.java

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

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

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

hibernate框架所需要的jar

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

1 
2 3
4
5
oracle.jdbc.driver.OracleDriver
6
jdbc:oracle:thin:@127.0.0.1:1521:orcl
7
holly
8
sys
9
org.hibernate.dialect.Oracle10gDialect
10
true
11
true
12 13
14
15
hibernate.cfg.xml

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

1 package com.entity; 2  3 public class Teacher { 4     private int id; 5     private String name; 6      7     public Teacher() { 8     } 9 10     public Teacher( String name) {11         this.name = name;12     }13     public Teacher(int id, String name) {14         this.id = id;15         this.name = name;16     }17 18     public int getId() {19         return id;20     }21 22     public void setId(int id) {23         this.id = id;24     }25 26     public String getName() {27         return name;28     }29 30     public void setName(String name) {31         this.name = name;32     }33 34     @Override35     public String toString() {36         return "Teacher [id=" + id + ", name=" + name + "]";37     }38     39     40     41 42 }
Teacher.java

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

1 
2 3
4
5
6
7
seq_teacher 8
9
10 11
12
13
Teacher.hbm.xml

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

1 package com.util; 2  3 import org.hibernate.HibernateException; 4 import org.hibernate.Session; 5 import org.hibernate.SessionFactory; 6 import org.hibernate.cfg.Configuration; 7  8 public class HibernateUtil { 9     private  static ThreadLocal
thread=new ThreadLocal
();10 private static Configuration config=null;11 private static SessionFactory factory=null;12 13 static{14 try {15 config=new Configuration().configure("/hibernate.cfg.xml");16 factory=config.buildSessionFactory();17 } catch (HibernateException e) {18 System.out.println("读取配置文件失败");19 e.printStackTrace();20 }21 }22 23 public static Session getSession(){24 Session session=thread.get();25 if(session==null){26 session=factory.openSession();27 thread.set(session);28 }29 return session;30 31 }32 33 public static void closeSession(){34 Session session=thread.get();35 thread.set(null);36 session.close();37 }38 }
HibernateUtil.java

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

1 package com.dao; 2  3 import org.hibernate.Session; 4 import org.hibernate.Transaction; 5  6 import com.entity.Teacher; 7 import com.util.HibernateUtil; 8  9 public class TeacherDao {10     public static void main(String[] args) {11         Teacher teacher=new Teacher(2,"死猪投资2");12         //insertTeacher(teacher);13         updateTeacher(teacher);14         getTeacher(2);15     16     }17 18     private static void updateTeacher(Teacher teacher) {19         Session session=HibernateUtil.getSession();20         Transaction tx=session.beginTransaction();21         session.merge(teacher);22         tx.commit();23         System.out.println("修改成功");24         HibernateUtil.closeSession();25         26     }27 28     private static void getTeacher(int id) {29         Session session=HibernateUtil.getSession();30         Teacher teacher=(Teacher) session.get(Teacher.class, id);31         System.out.println(teacher);32         HibernateUtil.closeSession();33     }34     35     private static void insertTeacher(Teacher teacher) {36         Session session=HibernateUtil.getSession();37         Transaction tx=session.beginTransaction();38         session.save(teacher);39         tx.commit();40         System.out.println("保存成功");41         HibernateUtil.closeSession();42     }43     44     45 46 }
TeacherDao.java

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

 

转载于:https://www.cnblogs.com/holly8/p/5738758.html

你可能感兴趣的文章
BZOJ-1497 最大获利
查看>>
4-4 修改文件
查看>>
并发编程(十):AQS
查看>>
条件注释判断浏览器版本<!--[if lt IE 9]>
查看>>
Comparison among several SGD derivation
查看>>
ModelAndView同时向页面传递多个参数
查看>>
samba 配置参数详解
查看>>
shell 正则表达式
查看>>
expect 交互 之双引号较长变量
查看>>
Altium designer18设置原理图尺寸
查看>>
公司人数和气质的限制关系
查看>>
数据集成工具Teiid Designer的环境搭建
查看>>
Coap协议学习笔记-第一篇
查看>>
listview反弹实现详解
查看>>
Java高级架构师(一)第24节:加入ehcache,把工程加入到Git
查看>>
this用法(ryf)
查看>>
第一天博客园
查看>>
MP4文件格式的解析,以及MP4文件的分割算法
查看>>
FAT32与NTFS区别
查看>>
安卓开发环境搭建
查看>>