13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

连Hibernate技术都不清楚,你敢说你自己会ORM框架?

 前言

成都创新互联公司专注于郫都网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供郫都营销型网站建设,郫都网站制作、郫都网页设计、郫都网站官网定制、微信小程序定制开发服务,打造郫都网络公司原创品牌,更为您提供郫都网站排名全网营销落地服务。

ORM框架不是一个新话题,它已经伴随我们很多年了。它提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立了很好的映射关系。在Java中常用的ORM框架主要有两个:Hibernate和iBatis。本篇文章主要介绍Hibernate的使用方法,后续会出介绍iBatis的文章。

传统的MVC开发模式

  1. M:Model包括pojo、service、dao。
  2. V:View 包括jsp、html、模块引擎。
  3. C:Controll 包括我们动态网络资源的技术:Servlet。

SSH框架在开发中的作用

同时可以看下其余框架(SSM、SSS)的含义:

Hibernate是什么

1.Hibernate是一个非侵入式ORMapping框架

2.ORMapping解析

Hibernate就是能够通过操作Java对象来达到操作数据库的一门技术。

Hibernate能干什么

简单的说:实现数据库的所有操作(CRUD),是原有DAO层的一个解决方案,也是一个替代品。

Hibernate的简单使用

「简单使用:」

导包,将下载下来的required+jpa相关的包放到一个文件里面

在src下面创建hibernate.cfg.xml配置文件

 
 
 
 
  1.  
  2. "-//Hibernate/Hibernate Configuration DTD//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4.  
  5.     
  6.         
  7.         com.mysql.jdbc.Driver
  8.         
  9.         jdbc:mysql:///qianyu
  10.         
  11.         root
  12.         
  13.         root
  14.         
  15.         org.hibernate.dialect.MySQL5Dialect
  16.         
  17.         update
  18.         
  19.         
  20.         
  21.         
  22.         
  23.     
  24.  

创建Java的类的对象

 
 
 
 
  1.  public class User implements Serializable{
  2.  private static final long serialVersionUID = -6949433888868762441L;
  3.  private int uId;
  4.  
  5.  private String userName;
  6.  
  7.  private String userPwd;
  8.  public User(int uId, String userName, String userPwd) {
  9.   super();
  10.   this.uId = uId;
  11.   this.userName = userName;
  12.   this.userPwd = userPwd;
  13.  }
  14.  public User() {
  15.   super();
  16.  }
  17.  public int getuId() {
  18.   return uId;
  19.  }
  20.  public void setuId(int uId) {
  21.   this.uId = uId;
  22.  }
  23.  public String getUserName() {
  24.   return userName;
  25.  }
  26.  public void setUserName(String userName) {
  27.   this.userName = userName;
  28.  }
  29.  public String getUserPwd() {
  30.   return userPwd;
  31.  }
  32.  public void setUserPwd(String userPwd) {
  33.   this.userPwd = userPwd;
  34.  }
  35.  @Override
  36.  public String toString() {
  37.   return "User [uId=" + uId + ", userName=" + userName + ", userPwd=" + userPwd + "]";
  38.  }
  39.  
  40. }

编写测试类

 
 
 
 
  1. @Test
  2.  public void testHelloWord() throws Exception {
  3.   //引入配置文件
  4.   Configuration cfg=new Configuration().configure("hibernate.cfg.xml");
  5.   //创建SessionFactory对象
  6.   SessionFactory sf=cfg.buildSessionFactory();
  7.   //创建会话
  8.   Session session=sf.openSession();
  9.   //开启事务
  10.   session.beginTransaction();
  11.   //操作对象
  12.   
  13.   User user=new User(1,"小羽","110");
  14.   
  15.   //开始操作
  16.   session.save(user);
  17.   
  18.   //进行事务的提交
  19.   
  20.   session.getTransaction().commit();
  21.   
  22.   session.close();
  23.  
  24.  }

Hibernate中的hibernate.cfg.xml配置文件的详解

 
 
 
 
  1. "-//Hibernate/Hibernate Configuration DTD//EN"
  2. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  3.  
  4.     
  5.     
  6.         
  7.         com.mysql.jdbc.Driver
  8.         
  9.         jdbc:mysql:///qianyu
  10.         
  11.         root
  12.         
  13.         root
  14.         
  15.         
  16.         
  17.         org.hibernate.dialect.MySQL5Dialect
  18.         
  19.         
  20.         update
  21.         
  22.         true
  23.         
  24.         true
  25.           
  26.         
  27.         
  28.        
  29.        
  30.        
  31.         
  32.     
  33.  

Hibernate的xxx.hbm.xml配置文件的详解

 
 
 
 
  1.  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  2.  "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  3.     
  4.  
  5.  
  6.      
  7.   
  8.       
  9.    
  10.   
  11.   
  12.   
  13.   
  14.     
  15.  

Hibernate中的CRUD的实现

 
 
 
 
  1. 添加数据
  2.     session.save(user);  
  3.   session.persist(user);
  4. 修改数据
  5.         session.beginTransaction(); 
  6.   //查询数据(积极的加载)
  7.   User user=session.get(User.class,1);
  8.   //下面支持的是懒加载
  9.   user.setUserName("xxxxx");
  10.   user.setUserPwd("yyyyy");
  11.   session.getTransaction().commit();
  12. 数据查询
  13.         //查询数据(积极的加载)
  14.   User user=session.get(User.class,1);
  15.   //下面支持的是懒加载
  16.   User user2=session.load(User.class,1); 
  17.    删除数据
  18.        //查询数据(积极的加载)
  19.   User user=session.get(User.class,1);
  20.   session.delete(user);

Hibernate中的帮助类的编写

 
 
 
 
  1. public class HibernateUtils {
  2.  private static Configuration cfg=null;
  3.  private static SessionFactory sf=null;
  4.  private static ThreadLocal threadLocal=null;
  5.  static{
  6.   //初始化线程的局部变量
  7.   threadLocal=new ThreadLocal();
  8.   //加载配置文件
  9.   cfg=new Configuration().configure("config/hibernate.cfg.xml");
  10.   //生成我们的工厂
  11.   sf=cfg.buildSessionFactory();
  12.  }
  13.  
  14.  /**
  15.   * 获取session的玩法
  16.   * @Title: getSession   
  17.   * @Description: TODO
  18.   * @param: @return      
  19.   * @return: Session      
  20.   * @throws
  21.   */
  22.  public static Session getSession(){
  23.    Session session=threadLocal.get();
  24.    if(null==session){
  25.     session=sf.openSession();
  26.     session.beginTransaction();
  27.     threadLocal.set(session);
  28.    }
  29.    return session;
  30.  }
  31.  
  32.  /**
  33.   * 关闭Session
  34.   * @Title: close   
  35.   * @Description: TODO
  36.   * @param:       
  37.   * @return: void      
  38.   * @throws
  39.   */
  40.  public static void close(){
  41.   Session session=threadLocal.get();
  42.   if(null!=session){
  43.    session.getTransaction().commit();
  44.    session.close();
  45.    threadLocal.remove();
  46.   }
  47.  }
  48. }

注意事项

  1. 我们hibernate.cfg.xml配置文件中这个括hibernate.是可以省略
  2. 为什么不开启事务也能查询到数据?是因为默认Hibernate存在只读事务,只读事务是可以完成数据的读的操作的,如果是要完成增删改的话那么就需要读写事务,这个时候就需要开启事务

Save和Persist的区别

结语

本篇关于Hibernate的介绍就先到这里结束了,后续会出更多关于Hibernate系列更多文章,谢谢大家支持!


网页题目:连Hibernate技术都不清楚,你敢说你自己会ORM框架?
文章链接:http://cdbrznjsb.com/article/cdpogio.html

其他资讯

让你的专属顾问为你服务