Hibernate笔记一
Hibernate介绍
Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架.Hibernate的持久化方案,将用户从原始的JDBC底层SQL访问中解放出来,用户无须关注底层数据库操作,只要通过操作映射到数据表的Java对象,就可以对数据库进行增删改查
ORM (Object Relational Mapping对象关系映射)
ORM 就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据表的操作
流行数据库框架
1. JPA(Java Persistence API) : 通过注解描述对象与数据表映射关系 (只有接口规范)
2. Hibernate : 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL , Hibernate实现JPA规范
3. MyBatis : 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 (企业主流)
* MyBaits 并不是完全ORM , 需要在xml中配置SQL语句
4. Apache DBUtils(超链接到DBUtils那节笔记里面去)
5. Spring JDBCTemplate
SQL语句封装程度 Hibernate > MyBatis > Apache DBUtils 、Spring JDBCTemplate
Hibernate中的ORM实现
数据库中的表与java中的类对应
表中的记录是与类中的对象对应
表中的字段是与类中的属性对应
Hibernate体系结构
Hibernate目录结构
Hibernate使用
1.导入jar包
导包的内容参见上一步,目录结构中导入即可
特别介绍: log4j(链接上log4j的单独的笔记内容)
2.编写类和关系映射配置xx.hbm.xml
public class Customer {
private int id;
private String name;
private int age;
private String city;
...
}
hibernate 完全ORM,只需要操作Customer类对象, 自动生成SQL 操作customer 表
但是需要为实体类和数据表进行关系映射配置
1.在实体类所在的包下创建名为:类名.hbm.xml
文件,eg:Customer.hbm.xml
2.配置规则参见 hibernate3.jar org/hibernate/hibernate-mapping-3.0.dtd
配置属性到列映射时,指定类型,类型有三种写法
第一种 java类型 java.lang.String
第二种 hibernate类型 string
第三种 SQL类型 varchar(20)
3.配置核心配置文件hibernate.cfg.xml
Hibernate框架支持两种 Hibernate属性配置方式
1.hibernate.properties
采用properties方式,必须手动编程加载 hbm文件或者 持久化类
2.hibernate.cfg.xml
采用XML配置方式,可以通过配置添加hbm文件
规则参见 hibernate3.jar /org/hibernate/hibernate-configuration-3.0.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 会话连接工厂,建立数据库连接需要SessionFactory -->
<session-factory>
<!-- JDBC连接基本参数 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernatetest</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- 配置数据库方言,便于生成一些与数据库相关SQL方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- DDL策略 可以根据需要自动创建数据表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 将SQL语句 输出到控制台 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 导入映射的po类的xx.hbm.xml映射文件-->
<mapping resource="cn/itcast/domain/Customer.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
注意:
配置文件必须放在根目录下
通常采用方式2来配置
编程操作使用Hibernate框架
web层的javabean叫vo viewobject
service层 bo business object
dao层 po 持久化对象
po类需要有个无参构造,get/set方法,私有化属性,属性使用包装类型,不要用基本类型,类不能为final(因为要为他生成代理),
还需要有一个与表中主键映射的字段
hbm映射介绍
pojo是个啥? 视频两分钟的时候介绍了下