Java学习之hibernate(二)

自动生成表结构

(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在操作数据库的时候就是将持久态的数据同步到数据库中




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值