我的见解之hibernate(二)

下面补全对上篇文章第四步的几个变量解析

<span style="font-size:24px;">
		SessionFactory sessionFactory = null;

               Configuration configuration = new Configuration().configure();

               ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
									.applySettings(configuration.getProperties())
                                                                        .buildServiceRegister();
		
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
		
		Session session = sessionFactory.openSession();
		
		Transaction transaction = session.beginTransaction();
		
		News news = new News("JAVA", "jiangtao", new Date(new java.util.Date().getTime()));
		
		session.save(news);
		
		transaction.commit();
		
		session.close();

		sessionFactory.close();</span>

Cofiguration:用来读取hibernate配置文件信息的,包括hibernate.cfg.xml文件,包括*.hbm.xml文件,也就是说,它包括了访问数据库的基本信息,方言等

创建configuration有两种方式:

①属性文件(hibernate.properties):  Configuration cfg = new Configuration();

②Xml文件(hibernate.cfg.xml) Configuration cfg = new Configuration().configure();

Configuration 的 configure 方法还支持带参数的访问:
        File file = new File(“simpleit.xml”);
        Configuration cfg = new Configuration().configure(file);

ServiceRegister: Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry  注册后才能生效

SessionFactory:创建session的工程,线程安全的,一经构造就被赋予特定的配置信息(不可变),创建SessionFactory很浪费资源,所以一个项目一般只创建一个SessionFactory

Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection。

Session 类的方法:
取得持久化对象的方法: get() ,load()
持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()
开启事务: beginTransaction().
管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等

Transaction:事务,代表一个原子操作,要么同时完成,要么同时不完成,方法有commit(),rollback(),wasCommitted();


hibernate.cfg.xml文件中的两个配置项解析

hbm2ddl.auto:该属性可帮助程序员实现正向工程, 即由 java 代码生成数据库脚本, 进而生成具体的表结构. 。取值 create | update | create-drop | validate
    create : 会根据 .hbm.xml  文件来生成数据表, 但是每次运行都会删除上一次的表 ,重新生成表, 哪怕二次没有任何改变
    create-drop : 会根据 .hbm.xml 文件生成表,但是SessionFactory一关闭, 表就自动删除
    update : 最常用的属性值,也会根据 .hbm.xml 文件生成表, 但若 .hbm.xml  文件和数据库中对应的数据表的表结构不同, Hiberante  将更新数据表结构,但不会删除已有的行和列
    validate : 会和数据库中的表进行比较, 若 .hbm.xml 文件中的列在数据表中不存在,则抛出异常
format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值