Hibernate复习笔记(一)

1.Hibernate对类文件的要求(即对映射为数据库表的类):

a.最好不要是final类型的,这个对lazy加载会有影响

b.可选id(最好有id,当然,也可以没有)

c.必须 有一个默认不带参数的构造函数

2.在用SessionFactory的时候,只让它初始化一次,多次使用。因为读取配置文件很需要时间。

这样写,构造一个final的HibernateUtil类:

package com.HibernateDemo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public final class HibernateUtil {

	private static SessionFactory sessionFactory;
	private HibernateUtil()
	{
		//静态的构造方法,让类不能被new
	}
	//当虚拟机加载类时,就调用static中的代码
	static{
		Configuration cfg=new Configuration();
		cfg.configure();
		sessionFactory=cfg.buildSessionFactory();
	}
	//返回SessionFactory
	public static SessionFactory getSessionFactory()
	{
		return sessionFactory;
	}
	//返回Session
	public static Session getSession()
	{
		Class sessionClass=Session.class;
		return sessionFactory.openSession();
	}
}

3.cfg.configure();就是读取hibernate.cfg.xml文件,也可以不叫这个名字,但就需要在括号中写文件名了。

4.User.Class,返回的就是一个Class类型的对象,它包含User类中所有的信息,包括类名、属性及方法等

5.load和get的区别:

load不立即访问数据库,它在第一次使用时才访问数据库。

6.save和persist的区别:

在不开事务时,save插入insert语句然后再回滚;persist没有插入

7.对象的状态:

a.瞬时:对象在数据库中没有与之对应的记录,与Session也没有关系;

b.持久:对象在数据库中有与之对应的记录,与Session相关;

c:脱管:对象在数据库中有与之对应的记录,与Session无关;

new一个对象时,对象为瞬时;当save()时,对象为持久;当操作完成,Session关闭时,对象为脱管。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值