一、准备工作
导入sql文件
二、编写实体类
(1)类是public的
(2)实现Serializable接口
原因:每当客户端访问某个能开启会话功能的资源,web服务器就会创建一个HTTPSession对象,每个HTTPSession对象都会占用一定的内存,如果在同一个时间段内访问的用户太多,就会消耗大量的服务器内存,为了解决这个问题我们使用一种技术:session的持久化
什么是session持久化?
web服务器会把暂时不活动的并且没有失效的HTTPSession对象转移到文件系统或数据库中储存,服务器要用时在把他们转载到内存。
现在我们言归正传,为什么要实现序列化?
把HTTPSession保存到文件系统或数据库中需要采用序列化的方式,把HTTPSession从文件系统或数据库中装载到内存需要采用反序列化来恢复对象的每个属性,所以我们要实现java.io.Serializable
(3) 成员变量私有
(4)有getter、setter方法
(5)有默认无参构造函数
成员变量数据类型选择问题:
基本类型和包装类型,选择哪个?
包装类(因为包装类可以设置为null)
三、拷贝jar包
数据库驱动包
日志记录的包
Hibernate必须的包
四、编写映射文件
映射文件的作用:定义实体类和表的对应关系,实体类中的属性和表的字段的对应关系
(1)导入dtd约束 (在hibernate的核心jar包中)
(2)编写映射文件内容
<hibernate-mapping package=" "> //指定包的名称
<class name="实体类名称 " table="数据库表的名称 ">//建立实体类和表的对应关系
<id name=" 属性名" column="数据库表的字段名 "> //映射主键
<generator class=" "></generator> //主键生成策略
</id>
<property name="属性名 " column="数据库表的字段名 "></property> //映射其他字段
....
</class>
</hibernate-mapping>
五、编写主配置文件
导入dtd约束
必须包含三部分内容:连接数据库的基本信息、hibernate的基本配置、映射文件的位置
六、测试
导入junit的jar包
(实现保存客户的操作)
1.加载主配置文件
2.构建sessionFactory
3.使用sessionFactory生产一个session
session对象常用方法:
4.开启事务
5.执行操作
6.提交事务
7.释放资源
七、在hibernate中使用连接池
1.导入jar包
2.在主配置文件中配置
八、抽取HibernateUtil工具类
SessionFactory维护了很多信息,同时又是线程安全的,所有由该工厂生产的session都共享工厂中维护的数据
SessionFactory使用原则:一个应用应该只有一个SessionFactory,在应用加载时创建,应用卸载时销毁。
静态代码块的作用:随着类的加载而执行,而且只执行一次
常用知识点:
实体查询的方法:get和load
1.查询时机不一样:get是立即加载;load是延迟加载
2.返回结果不一样:get返回查询的实体类对象,load方法返回的是实体类的代理对象