您的位置:首页 > 其它

Hibernate配置01

2018-03-11 10:58 267 查看
Hibernate就是一个持久层的ORM的框架

(ORM :Object Relational Mapping.对象关系映射.框架是一个个JAVA类构成的体系结构,属于半成品);



Hibernate的优点:

1.用来代替JDBC和DBUtils技术,操作数据库

2.将对关系型数据库操作转换为面向对象操作;

Hibernate映射稳文件

格式:类名.hbm.xml









not-null=”false” :允许没有值的实体类未空;



两方的关系配置中都可以使用cascade属性配置级联操作:

save-update: 级联保存,保存一方时级联保存另一方数据.

delete:级联删除,删除一方时级联删除另一方数据.

all:级联删除+级联保存

结论:

*级联操作就是为了简化代码书写.

*级联操作使用的时候要慎重.尤其级联删除.

可以使用inverse属性,在一的一方决定是否需要维护关系:

true: 将关系维护反转给对方.我不会维护关系(外键).

false(默认值): 不反转给对方维护. 我会维护关系(外键).

结论:

* 要不要放弃维护外键要看项目中的业务方向.例如CRM中,录入客户时,不需要指定联系人.录入联系人时需要指定联系人属于哪个客户. 业务上来说,就应该有联系人来维护与客户的关系. 客户不需要维护与联系人的关系. 可以在客户中配置inverse=true来放弃维护关系.(客户和联系人是一对多关系)





问题:如果两方都维护了关系.那么维护关系时,向中间表插入记录,会插入重复的记录.将会报错!!!

解决方案1: 代码上由一方放弃

解决方案2: 配置上使用inverse属性,让一方放弃关系维护

级联操作 :cascade

save-update:级联保存

delete:级联删除

all:2合一

结论: 级联操作用来简化操作.但是在多对多中极其危险.一定尽量避免在多对多中配置级联删除.其实不论从操作的危险程度还是业务逻辑角度来看.不存在多对多删除的问题.

Hibernate的核心配置文件

格式:hibernate.cfg.xml



演示session操作-保存

public void fun2(){

//1 创建Configuration
Configuration conf = new Configuration();
//2 调用方法读取主配置文件 .默认加载src下的hibernate.cfg.xml
conf.configure();
//3 根据配置信息获得SessionFactory工厂对象.由SessionFactory真正保存和使用配置信息
//SessionFactory创建需要消耗很大内存资源.设计上来说,是线程安全的对象.
SessionFactory sf = conf.buildSessionFactory();
//4 获得session.
Session session = sf.openSession();
//5 获得操作事务对象
Transaction tx = session.beginTransaction();
//数据库操作
//--------------------------------------------------
Customer c = new Customer();
c.setCust_name("jerry");
session.save(c);
//--------------------------------------------------
//提交|回滚事务
tx.commit();//提交
//关闭资源
session.close();
sf.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息