zoukankan      html  css  js  c++  java
  • [JavaWeb基础] 005.Hibernate的配置和简单使用

    1.Hibernate简介

    Hibernate是一个基于Java的开源持久化中间件对JDBC做了轻量的封装。采用ORM映射机制,负责实现Java对象关系数据库之间的映射,把sql语句传给数据库,并且把数据库返回的结果封装成对象内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API.以对象的形式操作数据,提高开发效率,不用关心数据库种类(换数据库只要修改配值文件)。

    2.在MyEclipse上创建一个DB broswer

    这个东西你可以从Window -> Show View ->Others中查找到。然后右键创建一个新的连接对象.

    测试通过就可以了。

    3.通过MyEclipse快速创建Hibernate

    选中你要添加Hibernate的项目,右键->MyEclipse->Add Hibernate Capatilities

    下一步

    下一步

    下一步

    填写完按finish就完成了,然后看看你的项目多了哪些文件

    4.上面的配置完后,我们就要开始配置数据库的映射关系,有了DB browser就容易多了

    选中刚才配置的DB browser,然后选中要生成的Table

    选择完成后会出现

    然后就可以直接点击Finish结束了,那么我们就完成了Hibernate的配置了。

    5.配置完成了,我们来看看如何使用它。

    package com.babybus.sdteam.dao;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Query;
    import org.hibernate.Session;
    
    import com.babybus.sdteam.hibernate.HibernateSessionFactory;
    import com.babybus.sdteam.vo.Student;
    
    
    public class StudentHibernateDao {
    
        private Session session = null;
        
        public StudentHibernateDao()
        {
        	// 一定不能直接用getSession不然会报重复错误
        	session = HibernateSessionFactory.getSessionFactory().openSession();
        }
        
        
        /**
         * 插入数据
         * @param student
         * @throws SQLException 
         */
        public void insertStudent(Student student) throws SQLException
        {
        	// 开启事务
        	session.beginTransaction();
        	session.save(student);
        	// 提交事务
        	session.getTransaction().commit();
        }
        
        /**
         * 删除数据
         * @param student
         * @throws SQLException 
         */
        public void deleteStudent(int id) throws SQLException
        {   
        	// 开启事务
        	session.beginTransaction();
        	Student student = (Student)session.get(Student.class, id); 
        	session.delete(student);
        	// 提交事务
        	session.getTransaction().commit();
        }
        
        /**
         * 修改数据
         * @param student
         * @throws SQLException 
         */
        public void updateStudent(Student student) throws SQLException
        {
        	// 开启事务
        	session.beginTransaction();
        	session.update(student);
        	// 提交事务
        	session.getTransaction().commit();
        }
        
        /**
         * 查询数据
         * @param student
         * @throws SQLException 
         */
        public List<Student> queryStudent(Student student) throws SQLException
        {
        	 List<Student> resultList = new ArrayList<Student>();
        	 // hql查询,简单易懂
        	 String hql="from Student as Student where 1=1 and ";//使用命名参数,推荐使用,易读。
             // 条件不为空
             if(student != null)
             {
    	         // 学生名称
    	         if(student.getStudentname() != null && !student.getStudentname().trim().equals("") )
    	         {
    	        	 hql += " studentname = '" + student.getStudentname() + "' and ";
    	         }
    	         // ID
    	         if(student.getId() != 0 )
    	         {
    	        	 hql += " id = " + student.getId() + " and ";
    	         }
    	         // 年龄
    	         if(student.getAge() != 0 )
    	         {
    	        	 hql += " age = " + student.getAge() + " and ";
    	         }
    	         // 年级
    	         if(student.getClassname() != null && !student.getClassname().trim().equals("") )
    	         {
    	        	 hql += " classname = '" + student.getClassname() + "' and ";
    	         }
             }
             hql = hql.substring(0, hql.length() - 5);
        	 Query query=session.createQuery(hql);
        	 resultList=query.list();
             return resultList;
        }
        
        public void closeSession()
        {
        	session.close();
        }
    }
    

    6.例子编写过程遇到的问题

    ①.首先要注意的是*.hbm.xmlDTD头

      <?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">

      如果报找不到xml,可以试试改下头

    ②.如果报错找不到类,可能和Tomcat下面的jar包冲突了,找到并删除即可

    ③.如果报映射文件重复,那么获取session的方式可能有问题参考我上面代码注释

    以上我们就学会了简单的Hibernate,所谓师傅带进门,修行在个人,大家要进一步学习,可以去网上看更深入的教程

    结语

    • 受益,掌握了Hibernate的初级应用

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 

    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4606174.html

  • 相关阅读:
    10-22 训练 T2 plate
    C语言I博客作业03
    c语言I博客作业02
    数学的数字
    javascript 递归
    WEB 动画的一些实现方式
    javascript 中Object一些高效的操作方法
    javascript 中Array一些高效的操作方法
    mac os 的一些命令
    javascript 继承
  • 原文地址:https://www.cnblogs.com/superdo/p/4606174.html
Copyright © 2011-2022 走看看