Hibernate简介
Hibernate作者——Gavin King
Hibernate创始人
《 Hibernate in action 》作者
EJB 3.0的Entity bean specification的实际领导人(sun任命的领导人是Linda DeMichiel)
参加了XDoclet和Middlegen的开发
2003年9月加入JBoss,全职进行Hibernate开发
Hibernate
- 一个开发源代码的对象关系映射框架
- 对JDBC进行了非常轻量级的对象封装
- 将JavaBean对象和数据库的表建立对应关系
Hibernate优势
Hibernate是一个优势的java持久化层解决方案
是当今主流的对象-关系映射工具
Hibernate简化了jdbc繁琐的编码
Hibernate将数据库的连接信息都存放在配置文件中
Hiberbate配置文件
<hibernate-mapping>
<class name="cn.jbit.houserent.bean.User" table="users" schema="jbit">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="password" type="java.lang.String" lazy="false">
<column name="password" length="50" not-null="true" />
</property>
<property name="telephone" type="java.lang.String" lazy="false">
<column name="telephone" length="12" />
</property>
<property name="username" type="java.lang.String" lazy="false">
<column name="username" length="50" />
</property>
</class>
</hibernate-mapping>
<class name="cn.jbit.houserent.bean.User" table="users" schema="jbit">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<property name="password" type="java.lang.String" lazy="false">
<column name="password" length="50" not-null="true" />
</property>
<property name="telephone" type="java.lang.String" lazy="false">
<column name="telephone" length="12" />
</property>
<property name="username" type="java.lang.String" lazy="false">
<column name="username" length="50" />
</property>
</class>
</hibernate-mapping>
持久化
将程序中数据在瞬时状态和持久状态间转换的机制
持久化层
- JDBC 就是一种持久化机制
- 将程序数据直接保存成文本文件也是持久化机制的一种实现
- 在分层结构中,DAO 层(数据访问层)也被称为持久化层
- 将对象保存到关系型数据库中
- 将关系型数据库中的数据读取出来以对象的形式封装
Hibernate 操作数据库
1)读取并解析配置文件
Configuration conf = newConfiguration().configure();
(2)读取并解析映射信息,创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
(3)打开Session
Session session = sf.openSession();
(4)开始一个事务(增删改操作必须,查询操作可选)
Configuration conf = newConfiguration().configure();
(2)读取并解析映射信息,创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
(3)打开Session
Session session = sf.openSession();
(4)开始一个事务(增删改操作必须,查询操作可选)
Transaction tx = session.beginTransaction();
(5)数据库操作
session.save(user);//或其它操作
(6)提交事务(回滚事务)
tx.commit();(tx.rollback();)
(7)关闭session
session.close();
session.save(user);//或其它操作
(6)提交事务(回滚事务)
tx.commit();(tx.rollback();)
(7)关闭session
session.close();