1.hibernate框架:对JDBC做了轻量级的封装的框架
ORM:对象关系映射 即数据库表和持久化类的映射关系
持久层框架:优秀的JAVA持久化(即保存到ROM中)层解决框架
在Eclipse中使用Hibernate:
1.导入jar包,在/required文件夹下的8个必须的jar包(另外还有/optional下可选的jar包)
antlr-2.7.7.jar
dom4j-1.6.1.jar:xml解析
hibernate-commons-annotations-4.0.1.Final:注解
hibernate-core-4.1.4.Final.jar:核心包
hibernate-jpa-2.0-api-1.0.1.Final.jar:jpa框架
javassist-3.15.0-GA.jar:字节码文件处理的jar
jboss-logging-3.1.0.GA.jar:日志的处理
jboss-transaction-api_1.1_spec-1.0.0.Final.jar:事务管理
2.在src下新建一个配置文件:hibernate.cfg.xml(hibernate的核心配置文件)
dtd结尾的文件:规定了这个xml应该出现的节点
<!-- 添加声明:给节点添加约束 -->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
1.根节点:
<hibernate-configuration>
2.子节点:
<session-factory>
<!-- 多了一个配置:方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
3.在配置文件中配置映射文件
<mapping resource="映射文件的地址" />
4.读取配置文件,获取sessionFactory
Configuration config = null;
SessionFactory sessionFactory = null;
// 服务的注册
ServiceRegistry service = null;
public Session getSession() {
//读取hibernate.cfg.xml
config=new Configuration().configure();
//获取hibernate.cfg.xml中的配置
Properties settings=config.getProperties();
//,目的;获取service对象
//先创建一个builder对象
ServiceRegistryBuilder builder=new ServiceRegistryBuilder();
builder.applySettings(settings);
service=builder.buildServiceRegistry();
sessionFactory=config.buildSessionFactory(service);
return sessionFactory.openSession();
}
5.查询单个对象:session.get(Class class,主键);
保存:session.save(对象);
开启事务,提交事务
4.session方法:
1.get()和load()都是查询单个对象:
1.get():如果没有查到数据,返回null
2.load():在使用这个对象时抛异常
5.hibernate对应的java对象的三种状态:
1.瞬时状态
2.持久
3.游离状态
6.脏检查机制:
对持久对象进行修改操作,当提交事务时,hibernate 会对数据库进行数据检查。以持久对象的数据为准
7.刷新缓存的机制:
1.当提交事务
2.session.flush();没有提交事务
8.update和marge方法的区别:
update直接修改。
marge先查询这个对象,查到了修改。查不到添加
PS:1.Framework中都使用了Java中的反射(reflect)
2.Hibernate中通过session进行增删改需要提交事务