为工程添加数据源:
window-- show biew-- db browser-- oracle
name:名字
url:数据连接
username:用户
password:密码
add:oralcejar包
save password:选中
-----下一步 可选
------
创建配置连接文件:
右键项目--myeclipse--addhibernate
----1.选中hibernate3
2.默认
3.选第二项
----new -----db driver:选中自己需要的
------是否创建类
自动添加实体类
右击db browser中创建的数据源 ------选中table中的所要自动创建类的表-
----倒数第4个-
---------笔记------------------------
hibernate:开源的实现持久化的框架,是一个持久化的解决方案,对JDBC进行封装
框架:可复用的组件
持久化:将数据存储到一定的介质中
ORM:对象-关系映射
hibernate实体对象的三种状态:
瞬态:当程序退出后,数据就不存在了
持久态:存储到介质中
游离态:对象不由session管理的时候
使用hibernate执行增删改的操作,需要使用事物(连接、事物等等打开关闭的东西,越晚打开越好越早关闭越好)
使用session的get和load区别
使用get获得对象,如果没用,返回null,
使用load方法获得对象,如果不存在报异常
1、导入hibernate支持的jar
hibernate3.jar、lib/requried目录下的所有jar
2、添加JDBC驱动jar
oracle6.jar
3.编写hibernate.cfg.xml文件
4.编写实体类及映射文件
5.操作hibernate(此时可能出现一个异常,slf4....Logger,需要添加slf4j-nop-1.5.2.jar)
主键生成策略:
uuid.hex:128算法,字符串
sequence:oracle
increment:自动增长(long,int,short)
identity:应用于数据库中带有自动增长功能的(sql servler\mysql\db2)
native:由hibernate判断使用什么方式生成主键
assigneg:主键由应用程序负责,hibernate不参与
hibernate七大步:
//1、加载并解析hibernate配置
Configuration cfg=new Configuration().configure();
//2、构建SessionFactory
SessionFactory sf=cfg.buildSessionFactory();
//3、获得Session 打开Session
Session session=sf.openSession();
//4、事务
Transaction ts=session.beginTransaction();
//5、操作
session.delete(s);
//6、提交事务(回滚事务)
ts.commit();
*/
//7、关闭
session.close();
=============================================================
关联映射:
单向一对多关联关系:=========================
(Classs---Student)
一方:实体类:创建一个多的集合(Set)
映射文件:配置<set name="实体类中的Set的名字" table="关联的表">
<key column="关联表中的字段"></key>
<one-to-many class="关联表对应的实体类"/>
</set>
查询:把对应的多的集合查询出来
添加:使用集合添加
单向多对一关联关系:===========================
(student --- calsss)
多方:
实体类:声明关联类型对象
映射文件:
<many-to-one name="对象名" class="关联的实体类" column="对应的列"></many-to=one>
查询:查询Student实体,同事将classs查询出来
添加:学生对象中,添加班级实体
双向一对多关联关系:====================================
映射文件中的两个属性:cascade(级联) inverse(反转)
cascade:
none:对所有的操作都不关联
all:所有操作都关联
save-update:添加和更新的时候进行关联
delete:删除的时候进行关联
inverse:控制反转
true:由对象来负责管理关联关系
false:该方为主动方,由主动方管理关联关系
--------------------------
lazy 延迟加载:
true:延迟加载
false:不延迟加载
proxy:默认
多对多关联关系:=========================================
两端都配置set
要获得两张表的数据 需要用到创建第三张表
hibernate 查询(HQL--hibernate query language|QBC)
HQL:
带参数:
1.拼接hql语句
2.使用?占位,设置从0开始
3.设置参数名:参数名,设置时,:name query.setString("name","值");