• Hibernate学习笔记环境搭建及运行


    1、hibernate开发包下载 http://sourceforge.net/projects/hibernate/files/

    如果不能访问请用代理http://dongtaiwang.com/loc/phome.php

    2、添加jar包 将hibernate-release-4.3.7.Final\lib\required目录下的jar导入

    3、在src目录下创建Student.java(按Javabean规范来,这些属性跟数据库中的字段对应起来)

    内容如下:

    package cn.sky.bookshop.bean;
    
    public class Student {
        private int id;
        private String uname;
        private String upass;
        
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
        public String getUpass() {
            return upass;
        }
        public void setUpass(String upass) {
            this.upass = upass;
        }
        @Override
        public String toString() {
    	return "Student [id=" + id + ", uname=" + uname + ", upass=" + upass
    		+ "]";
        }
    }
    

    4、建立一个对象关系映射文件Student.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="cn.sky.bookshop.bean">
    	<class name="Student" table="student">
    		<id name="id" column="id">
    			<generator class="native"></generator>
    		</id>
    		<property name="uname" column="uname"></property>
    		<property name="upass" column="upass"></property>
    	</class>
    </hibernate-mapping>
    

    5、建立一个hibernate.cfg.xml配置文件

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>

        <session-factory>

            <!-- 数据库连接设置 -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
            <property name="connection.username">root</property>
            <property name="connection.password">215890</property>

            <!-- JDBC connection pool (use the built-in) -->
            <property name="connection.pool_size">1</property>

            <!-- SQL方言 -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

            <!-- Enable Hibernate's automatic session context management -->
            <property name="current_session_context_class">thread</property>


            <!-- 是否显示执行的SQL语句 -->
            <property name="show_sql">true</property>
            <!-- 对象关系映射文件 -->
            <mapping resource="cn/sky/bookshop/bean/Student.hbm.xml"/>

        </session-factory>

    </hibernate-configuration>

    5、建立一个HibernateUtil.java类,主要是获取session时使用

    package cn.sky.bookshop.util;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    
    public final class HibernateUtil {
        private static SessionFactory factory;
        private static Configuration conf;
        static {
    	conf = new Configuration().configure();
    	factory = conf.buildSessionFactory();
        }
    
        public static Session getSession() {
    	return factory.openSession();
        }
    
        public static void closeSession(Session session) {
    	if (session != null && session.isOpen()) {
    	    session.close();
    	}
        }
    }
    
    注意:这里色SessionFactory对象只有一个,这是按饿汉式单例设计的。

    6、然后可以设计DAO了,下面是我的DAO测试类

    package cn.sky.bookshop.test;
    
    
    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.criterion.Restrictions;
    
    import cn.sky.bookshop.bean.Student;
    import cn.sky.bookshop.util.HibernateUtil;
    
    public class TestStudent {
    
        public static void main(String[] args) {
    	// TODO Auto-generated method stub
    	Student stu = new Student();
    	stu.setUname("李四2");
    	stu.setUpass("123456");
    //	addStudent(stu); //添加数据
    //	updateStudent(stu, 1); //修改数据
    //	Student stu2 = selectStudentById(1); 查询数据
    //	System.out.println(stu2.toString());
    //	deleteStudentById(1);
    	
    	List list = selectStudentIf();
    	for (Object tem : list) {
    	    Student stu3 = (Student)tem;
    	    System.out.println(stu3.toString());
    	}
        }
        
        //添加学生记录
        public static void addStudent(Student stu){
    	Session session1 = HibernateUtil.getSession();
    	session1.beginTransaction();//开启事物(即创建了一个事物对象
    	session1.save(stu);	    //保存stu对象
    	session1.getTransaction().commit(); //提交事务
    	HibernateUtil.closeSession(session1);
        }
        //更新学生记录
        public static void updateStudent(Student stu,int id){
    	Session session1 = HibernateUtil.getSession();
    	Transaction tc = session1.beginTransaction(); //创建事物对象
    	stu.setId(id);
    	session1.update(stu);			//更新对象
    	tc.commit();				//提交事务
    	HibernateUtil.closeSession(session1);
        }
        //查询学生记录
        public static Student selectStudentById(int id){
    	Session session1 = HibernateUtil.getSession();
    	Transaction tc = session1.beginTransaction(); //创建事物对象
    	Query query = session1.createQuery("from Student s where s.id=?");
    	query.setInteger(0, id);  //这里下标从0开始替换?
    	Student stu = (Student)query.uniqueResult();
    	tc.commit();	
    	HibernateUtil.closeSession(session1);
    	return stu;
        }
        //删除学生记录
        public static void deleteStudentById(int id){
    	Session session1 = HibernateUtil.getSession();
    	Transaction tc = session1.beginTransaction(); //创建事物对象
    	Student stu = new Student();
    	stu.setId(id);
    	session1.delete(stu);
    	tc.commit();	
    	HibernateUtil.closeSession(session1);
        }
        //条件查询
        public static List<Student> selectStudentIf(){
    	Session s1 = HibernateUtil.getSession();
    	Transaction tc = s1.beginTransaction();
    	Criteria criteria = s1.createCriteria(Student.class); //创建条件查询对象
    	criteria.add(Restrictions.gt("id",1)); //添加查询条件
    	criteria.add(Restrictions.lt("id",5));
    	criteria.add(Restrictions.eq("id",2));
    	List<Student> list = criteria.list();
    	tc.commit();
    	s1.close(); 
    	return list;
        }
    
    }
    




  • 相关阅读:
    PHP腾讯地图地图接口调用提示{ "status": 110, "message": "请求来源未被授权,此次请求无来源信息" }
    PHP带参数匿名函数
    微信小程序实现图片预加载(图片延迟加载)
    快速排序
    《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
    《Linux命令行与shell脚本编程大全》第十七章 创建函数
    makefile中伪目标的理解
    《Linux命令行与shell脚本编程大全》第十六章 控制脚本
    《Linux命令行与shell脚本编程大全》第十五章 呈现数据
    《Linux命令行与shell脚本编程大全》第十四章 处理用户输入
  • 原文地址:https://www.cnblogs.com/37sky/p/5055554.html
Copyright © 2020-2023  润新知