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(){
(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(); }
相关文章推荐
- hibernate用注解配置实体类的映射-问题01
- 【hibernate】01-mysql存储引擎与配置文件分析
- hibernate之概述,入门案例(配置文件,api)(01)
- hibernate_01基本入门和基本配置
- 我学Hibernate - 01 (最基本的xml映射配置)
- 框架学习之spring整合hibernate、struts2框架-01基础配置
- 【JavaEE学习笔记】Hibernate_01_配置,核心,Session,事物,Jboss Tools
- Hibernate教程01_Hibernate的HelloWorld及基本配置
- hibernate配置缓存查询
- Hibernate配置
- hibernate的lazy配置引起的问题
- Spring笔记——配置Hibernate框架事务
- Hibernate概述、入门、配置文件详解、四大API详解
- 关于Hibernate的手动配置详细过程
- Hibernate-01-API及环境搭建
- KgB2B商贸平台商铺相册插件-Hibernate配置代码
- 转Spring+Hibernate+EHcache配置(二)
- Hibernate 使用JBOSS 自带JNDI连接池连接SQL SERVER 2005的配置方法
- hibernate常用配置
- Spring3.3 整合 Hibernate3、MyBatis3.2 配置多数据源/动态切换数据源 方法