标签:
Object :面向对象领域的
Relational:关系数据库领域的
Mapping:映射
Object: Relational
Hibernate:就是让程序员通过操作对象的方式来操作数据库中的表。
作用:加载Hibernate的配置文件
在classpath中建立一个hibernate.properties的配置文件。
由Configuration通过加载配置文件创建该对象。
SessionFactory 对象中保存了当前的数据库配置信息和所有映射关系以及预定义的SQL语句。同时,SessionFactory还负责维护Hibernate的二级缓存
预定义SQL语句:(注意如果有多个映射文件,每个映射文件都会有这4条预定义SQL语句)
select * from students where id=? //根据主键查询
insert into students (name,age,birthday) values(?,?,?); //全字段插入
update students set name=?,age=?,birthday=? where id=? //根据主键全字段更新
delete from students where id=? //根据主键删除
一个SessionFactory实例对应一个数据库,应用从该对象中获得Session实例。
SessionFactory是线程安全的,意味着它的一个实例可以被应用的多个线程共享。
SessionFactory是重量级的,意味着不能随意创建或销毁它的实例。如果只访问一个数据库,只需要创建一个SessionFactory实例,且在应用初始化的时候完成。
SessionFactory需要一个较大的缓存,用来存放预定义的SQL语句及实体的映射信息。
另外可以配置一个缓存插件,这个插件被称之为Hibernate的二级缓存(后续会详解二级缓存),被多线程所共享
结论:一般应用使用一个SessionFactory,最好是应用启动时就完成初始化。
不是线程安全的。应避免多个线程使用同一个Session实例。
Session是轻量级的,它的创建和销毁不会消耗太多的资源。应为每次客户请求分配独立的Session实例
Session有一个缓存,被称之为Hibernate的一级缓存。每个Session实例都有自己的缓存。
Hibernate应用通过它声明事务边界,有助于在不同的环境或容器中进行移植。
开启事务:Transaction tx = session.beginTransaction();//开启事务
tx.commit()事务提交 tx.rollback()事务回滚
JavaBean编写规范:
a、类一般是public的
b、有默认的构造方法
c、字段都是私有的
d、提供公有的getter和setter方法
e、一般都实现java.io.Serializable接口
注意:hibernate采用的暴力反射
概念:
实体类中的某些属性在数据库表中没有对应的字段,该属性的值是由数据库表中其他字段计算出来的。这样的属性叫做派生属性。
标签:
原文地址:http://www.cnblogs.com/fengru/p/5572370.html