javaweb 框架Hibernate配置和使用

首先先简单的讲一下我对这个框架的理解 :

我认为这个框架就是把数据库得每一条记录变成一个对象,存储在框架的内部 调用修改方法的时候修改的是框架内部的对象而不是数据库的对象,只有提交事务的时候才会修改数据库的东西,但是呢实际上框架里是不存储东西的,总的说呢这个框架就是帮助java开发的时候可以用面向对象的思想去操作数据库

使用之前肯定要导包 导入下面图片required文件夹中的所有的包

javaweb 框架Hibernate配置和使用_第1张图片

1,  建立映射关系

命名和位置都没有强硬的规范 一般情况下规定,一个实体类对应一个配置文件,把这个文件放在对应的bean目录下面,命名规范为 实体类名+.hbm+.xml

javaweb 框架Hibernate配置和使用_第2张图片



    
    
        
        
            
            
            
        
        
        
        
    

配置hibernate核心配置文件

创建核心配合文件(这个文件命名和位置都必须按照指定来,文件放在src目录下面  文件名为hibernate.cfg.xml)这里也是创建file只是创建的目录位置和命名不一样这里的目录位置和命名有强硬的规定因为hibernate里面写好的怎么读取这个配置文件

核心配置文件源码



    
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost:3306/hibernate
        root
        999
        
        org.hibernate.dialect.MariaDB53Dialect

        
        true
        
        true

        
        update

        
        
        

    

这些配置文件写好之后就可以去使用了

可以再dao层直接编写代码这里我只是写的一个主方法 测试使用实际使用中肯定是要写成函数来调用

    public static void main(String[] args) {
                
        //读取配置信息,就是读取xml里面写的东西
        Configuration configuration = new Configuration().configure();

        //获得sessionFactory对象
        //这个对象我们只用来获取session
        // 但是实际上这行代码检查了数据库和实体类之间的关系
        //如果有变化他就会更新
        //非常耗费资源  封装工具类节省资源
        SessionFactory sf = configuration.buildSessionFactory();

        //获得session
        Session session = sf.openSession();

        //开启事务
        /**
         * hibernate 必须要开启事务
         * 不开启不会保存数据到数据库
         * 什么是事务 我个人理解就是一件事情 提交事务就是把这件事给数据让数据库去做对应的操作
         */
        Transaction transaction = session.beginTransaction();
        Student s = new Student();
        s.setName("888");
        s.setAge(11);
        
        //修改方法通过学生对象中的主键查询到修改其他的字段
        //session.update(s);
        //通过主键查询这里查询出来肯定是一条数据也就是一个对象
        //这个方法会自动的帮你封装成对象所以要把.class文件给它
        //还要把主键传给它
        //session.get(Student.class,1);
        //删除方法 这里传进去的对象只要包括主键的值就行
        //删除方法一般不直接去用一般先拿主键查询如果查询到就执行删除
        // 如果查询不到就会返回给你一个null
        //这样可以区别是删除失败还是没有这一条数据
       // session.delete(s);
        //保存方法
        session.save(s);
        //提交事务
        transaction.commit();
        //关闭资源
        session.close();
        sf.close();
    }}

如果这样直接使用就会有很多的重复的代码所以可以把重复的代码封装在工具类的静态代码块里

工具类代码

public class HibernateUtil {
    private static Configuration configuration=null;
    private static SessionFactory sf=null;
    private static Session session = null;
    private static Transaction transaction = null;

    /**
     * 工具类方法都是静态的不想让别的类调用构造函数构造对象所以构造对象写成私有的
     */
    private HibernateUtil() {
    }

    static {
        //读取配置信息
        configuration = new Configuration().configure();
        //获得SessionFactory对象要通过她获得session对象
        sf = configuration.buildSessionFactory();
        //获得session对象
        session = sf.openSession();
        //开启事务
        transaction = session.beginTransaction();
    }

    public static Session getSession(){
        return session;
    }

    public static Transaction getTransaction(){
        return transaction;
    }

    //关闭资源
    public static void close(Session session){
        session.close();
        sf.close();
    }
}



你可能感兴趣的:(javaweb 框架Hibernate配置和使用)