1、基本步骤 

         1.1  创建web工程

         1.2  添加jar包(11个) hibernate 10个  mysql驱动 1个

         1.3  持久化类  pojo   实体类

                 1.  无参构造方法

                 2.  public  的 set/get方法

                 3.  成员变量私有

                 4.成员变量尽量使用包装类型。包装类型具有对象的属性和方法。

                 5.必须要有一个 oid(唯一标识) 和数据库表中的主键对应

                 6.该类不能用final修饰                               

        1.4 元数据配置文件   持久化类名   .hbm.xml

         1.5 主配置文件    hibernate.cfg.xml    启动和初始化 hibernate框架,加载映射文件

         1.6 测试

                      1、读取配置文件   Configuration  c  =  new  Configuration()    c.configure();

                      2   SessionFactory  factory  =    c.buildSessionFactory();  一个程序就一个SeessionFactory

                      3、 Session s = factory.openSession();   线程不安全,每次要创建一个  新的Session  类似于 Connection

                      4、对数据操作(增删改查)

                      5、关闭资源   s.close() 

2、主键生成策略

          <id>

                     <generator  class="native">

                     <generator/>

          </id>

                     主键的类型(2种) 

                             自然主键:开发者自己维护管理主键。(数据库操作的时候必须手动插入)

                                                assigned;

                             代理主键:Hibernate帮助去维护和管理主键。

                                               native :根据数据库平台选择     mysql :identity   (常用)

               identity:自动增长(int,long,short),只在支持主键自动增长的数据库使用。mysql支持,oracle不支持自动增长

                                               sequence: oracle使用

                                               increment:自动增长(int,long,short)。先查询表中最大的id值,最后最大的id加1作为新的主键插入 

                                               uuid:适用于 char,varchar.  32位的16进制的字符串。占用空间大(常用)

                 

3、数据库生成策略

            update:没有表就创建,有表就直接进行数据库操作

            create:  先删除存在的表(drop table  if  exists  表名   ),再去创建新的表去操作。

            create-drop:先删除存在的表,再去新建表去操作。操作完后直接删除表

                                sessionFactory.close()

            validate:  不创建表,开发者自己创建表。校验持久化类中的变量类型和数据库中表中的列是否一致。                     

4、Hibernate操作事务的方法

            开启事务:session.beginTransaction();

            提交事务:session.commit();

            回滚事务:session.rollback();

 

事务: 1、概念:在一个业务逻辑操作上的一系列动作 要么全部成功,要么全部失败

            2、jdbc如何操作事务?

                  已转账为例:

                                       开启事务:  connection.setAutoCommit(false);

                                       提交事务:  connection.commit();

                                       回滚事务:  connection.rollback();

                TheadLocal  存储线程的局部变量    

           3、事务面试要问的:

                1、事务特性:

                               原子性。一致性。持久性。隔离性。

                2、事务并发访问可能会出现的问题:

                              脏读(读未提交),不可重复读(读已提交,关注点是某一行),

                              虚读(幻读)(对整个表进行插入或者删除操作)

                3、事务的隔离级别:

                       READ      UNCOMMITED        都可能会发生

                       READ      COMMITED             避免脏读

                       repeatable   read;                    避免脏读和不可重复读

                      serializable    可串行化             都不会发生

           

    查看数据库的隔离级别:  

           select @@tx_isolation;

             设置隔离级别:

                                       set    transaction   isolation  (level )    

posted on 2018-01-14 14:38  Leroy_罗先生  阅读(121)  评论(0编辑  收藏  举报