Java学习之hibernate(二)

xiaoxiao2021-02-28  5

自动生成表结构

(etc/hibernate.properties)

    update(常用)

自动生成表结构 如果映射文件和数据库表字段不对应 将会修改表的字段

但是原来表的字段不会改变 会新增字段

    create

每次运行都会创建一个新的表(数据丢失)

    create-drop

每次运行都会创建一个新的表,并且每次运行结束都会把这个表删除

    validate

每次都会验证表结构 如果实体类与映射文件不同 会抛出一个异常

主键分类

   主键的规则:不能重复 不能修改

    1.自然主键

        表里面 有一个字段 符合主键的规则

        就直接使用这个字段 作为主键

        身份证

        号

    2.代理主键

    表里面 没有一个字段 符合主键的规则    

        自己创建 id 作为表的主键 这个键就叫代理主键

    

    

主键生成策略(7种) 

    

    identity

        主键自增 使用数据库当中的主键自增

        插入时 打印的sql语句中 不会插入id

    

    increment

    主键自增 由hibernate来管理

        插入数据时 先去数据库中查询当前的最大id

        然后 把查出来的id + 1 再插入数据

    

    uuid 

        全球不重复唯一标识 32位 字符串

        注意:id必须使用字符串类型

    

    native(最常用 三合一)

        根据使用的数据库类型来选择使用哪个策略

        所有数据库都支持identity或者sequence

    identity + sequence + hilo

    

    hilo (高低位算法)

        将主键交给hibernate处理 使用自己的算法 帮你维护主键

    

    assigned

        由自己维护主键 插入数据时需要有主键

        使用的代理主键

    

    sequence oracle 默认的

获取Session的封装方法

package com.lanou3g.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; /* * 作用 * 获取session对象 */ public class HibernateUtil { private static SessionFactory sessionFactory; static { Configuration configuration = new Configuration().configure(); sessionFactory = configuration.buildSessionFactory(); } // 获取session的方法 // 创建一个全新的session public static Session getOpenSession() { return sessionFactory.openSession(); } // 获取当前使用的session // 注意:使用该方法 必须在主配置文件中配置一下 public static Session getCurrentSession() { return sessionFactory.getCurrentSession(); } public static void close() { } }

hibernate操作对象的三种状态

    1.瞬时态 没有id 没有跟session产生关系

    2.持久态 有id 有跟session产生关系

    3.游离态 有id 没跟session产生关系

    Hibernate在操作数据库的时候就是将持久态的数据同步到数据库中

转载请注明原文地址: https://www.6miu.com/read-2450050.html

最新回复(0)