zoukankan      html  css  js  c++  java
  • 07-hibernate进阶

    1,hibernate.cfg.xml常用配置

    2,session简介

    3,transaction简介

    4,session详解

    5,对象关系映射常用配置

    hibernate.cfg.xml常用配置

    show_sql:是否把运行时候的sql语句输出到控制台,以便测试。

    format_sql:输出到控制台的sql是否排版,便于阅读

    hbm2dd.auto;可以帮助java生成数据库脚本,生成具体表结构。create|update|create-drop|validate

    default_schema:默认数据库

    dialect:配置数据库方言。

    session简介

    hibernate的执行过程:

    Configuration-创建-SessionFactory-创建-Session(类似JDBC中的connecttion,获取了Session,相当于获取了一个连接)--执行-save|delete|update|get

    --commit(提交事务)--session.close()(关闭连接)-- 结束

    不建议通过JDBC操作数据库,而是session操作。

    session可以理解操作数据库的对象。

    session与JDBC中的connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用。

    把对象保存在关系数据库中要调用session的各种方法,如:save(),update(),delete(),createQuery()等。

    transaction简介(事务)

    hibernate对数据的操作都是封装在事务中,并且默认是非自动提交的,所以用session保存对象时候,如果不开启事务,并且提交事务,对象并不会真正保存到数据库。

    如果你想让hibernate像JDBC那样自动提交事务,必须调用session对象的doWork()方法,获取jdbc的connection后,设置其为自动提交事务(不推荐)

    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Date;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.jdbc.Work;
    import org.hibernate.service.ServiceRegistry;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    //测试类
    public class StudentsTest {
        
        private SessionFactory sessionFactory;
        private Session session;
        private Transaction transaction;
        @Before
        public void init()
        {
            //创建配置对象
            Configuration config=new Configuration().configure();
            config.addClass(Students.class);//这个需要加上(视频里面没有)
            //创建服务注册对象。
            ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder()
                    .applySettings(config.getProperties()).build(); //通过config.getProperties()读取配置文档。
            //创建会话工厂对象
            sessionFactory=config.buildSessionFactory(serviceRegistry);
            //创建会话对象
            session=sessionFactory.openSession();
            //开启事务
        //    transaction=session.beginTransaction();
        }
        @After
        public void destory()
        {
        //    transaction.commit();//提交事务
            session.close();//关闭会话
            sessionFactory.close();//关闭会话工厂
        }
        
        @Test
        public void testSaveStudents()
        {
            //生成学生对象
            Students s=new Students(1,"张三丰","男",new Date(),"武当山");
        //下面使用了匿名函数 session.doWork(
    new Work() { @Override public void execute(Connection connection) throws SQLException { connection.setAutoCommit(true); } }); session.save(s);//保存对象进入数据库 } }
  • 相关阅读:
    Python-面向对象(一)-Day7
    Python-模块使用-Day6
    Python-迭代器&生成器&装饰器&软件目录结构规范-Day5
    Python-函数-Day4
    Python-字典、集合、字符编码、文件操作整理-Day3
    Python-字符串及列表操作-Day2
    Python-基础学习-Day1
    解决安装Weblogic domain卡住问题(Primeton BPS)
    怎样在旅途中拍出好看的照片
    Weblogic启动成功,控制台打不开
  • 原文地址:https://www.cnblogs.com/alsf/p/7820379.html
Copyright © 2011-2022 走看看