Hibernate(上)

Hibernate框架
Hibernate框架在分层中作用
Struts2: 基于MVC模式应用框架!
ORM映射
ORM是一种规则!
O  Object  对象
R  Relation 关系
M  Mapping 映射

ORM就是对象关系映射!
1. 把对象映射到数据的表的记录行中!
2. 作用 通过操作对象,影响数据库记录!
3. Hibernate 是对ORM规则的实现!
* 不写sql,操作数据库中数据!


ORM是对象关系映射,是一个概念,或说是一种规则,这个规则的实现:
1. Hibernate框架
2. 自己写的ORM实现
3. 其他框架Mybatise 或其他!

 
2. Hibernate第一个案例
下载源码:
版本: hibernate3.6  
  如:hibernate-distribution-3.6.0.Final-dist.zip

使用步骤:
1. 建库、建表 T_user 表
2. 写User.java实体类
3. Hibernate环境搭建
*  引入jar包
*  hibernate.cfg.xml
*  实体类的映射文件
User.hbm.xml    【表示是hibenrate的映射xml文件!】
-- 创建数据库
CREATE DATABASE day32 DEFAULT CHARACTER SET UTF8
-- 创建员工表
引入Jar文件:
Hibernate源码目录:
hibernate3.jar  +   required目录  +  jpa 目录  +  数据库驱动包 (9个)
hibernate.cfg.xml  主配置文件
App 测试
3. Hibernate Api
|-- Configuration   配置管理器对象
config.configure();   加载配置文件;
默认加载src/hibernate.cfg.xml文件!
如果hibernate放到其他目录,写路径即可:
如,cn/itcast/hibernate.cfg.xml
config.buildSessionFactory();     创建Session的工厂

config.addClass(clazz) 加载指定类型对象,对应的映射文件
注意: 
1. 对象一定要与映射文件在同一个包
2. 映射文件,一定是*.hbm.xml后缀!
  且名称一定与类名称一样!
3. 测试使用用
作用相当于:
config.addResource(“根据映射文件路径加载”)
|-- SessionFactory  session对象的工厂
    一个项目只需要有一个session的工厂即可!单例!
这个对象相当于:hibernate.cfg.xml配置文件!
sf.openSession(); 创建一个session对象!
sf.getCurrentSession();  线程方式创建session (注意:需要配置hibernate.cfg.xml)
创建session,再把创建的session绑定到当前线程上!
必须配置:thread


|-- Session        (重点)与数据库连接的会话,维护了一个Connection
Session对象的各个方法,封装了对数据库的所有操作!
包: org.hibernate.Session

更新操作:
session.save(obj);     保存一个对象
session.update(obj);    修改对象(要确保修改对象的主键一定要存在!)
session.saveOrUpdate(obj);   保存或更新
当没有设置主键,执行保存!
有设置主键且在数据库存在,执行更新!
session.delete(obj);   删除对象(要确保删除对象的主键一定要存在!)

查询操作:
Query q = Session.crearteQuery(HQL语句);   HQL查询! 
(适合有SQL语法基础的开发人员使用!)



|--- Transaction     事务对象

sf.openSession();  以这种方式创建的Session对象:
更新时候,需要有事务!否则数据不会反映到数据库!
查询时候,可以不开启事务!

4. Hibernate 实现CRUD
1. 写一个工具类
2. 写接口、实现!
5. hibernate.cfg.xml配置
Hibernate主配置,就是指:hibenrate.cfg.xml!
描述了: 
1. 连接数据库的参数
2. 其他配置如:方言,,,,
3. 加载的映射
可以参考这个文件,写配置信息:
 hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties
## MySQL
#hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password

自动建表,
方式1:在hibernate.cfg.xml中配置
## auto schema export
#hibernate.hbm2ddl.auto create-drop      在创建SessionFactory时候建表,
         在执行sf.close()方法时候删除表!
         (测试时候使用!)
#hibernate.hbm2ddl.auto create          每次始终创建表;先删除,再创建!
#hibernate.hbm2ddl.auto update   如果表不存在则创建,表存在则不创建!
#hibernate.hbm2ddl.auto validate   验证:检查映射配置与数据库表是否一致,
         不一致就报错!(生产环境使用!)
方式2:代码方式
public static void main(String[] args) {
// 加载主配置文件
Configuration config = new Configuration().configure();
// 使用工具类建表
SchemaExport export = new SchemaExport(config);
// 建立表
// 参数1:是否在控制台显示建表语句!
// 参数2:是否执行上面的建表sql
export.create(true, true);
}






6. 映射配置 : *.hbm.xml
映射文件作用:
1. 描述“对象”与“表”的映射关系
对象      表名
属性      字段
属性类型  字段类型
2. 映射文件,完全描述的就是一张表!
3. ORM的核心,就是映射的配置!

重点掌握:
1. 主键映射
* 主键映射  (主键生成策略)
* 联合主键映射
2. 普通字段映射

一个表是不是必须要有主键?  不是;  但99%的表都有主键!
在什么字段上建立主键?      字段唯一,改字段就可以作为主键,如:身份证标号!
  如果找到不到这样的字段,
1. 给一个id列;作为主键
2. 多列联合在一起作为,一个主键!
步骤:
1. 需求
用户信息:用户名、生日、地址、性别、年龄等!
主键列: 用户名、地址!(联合主键)
2. javabean
3. 映射
4. 测试
联合主键映射:
/**
 *  联合主键对象
 *  注意:一定要实现可序列化接口!  
 *  原因:因为sesison.get()方法要求主键一定要实现可序列化标记!
 
 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值