java:LeakFilling(Hibernate)
1.关系型数据库:
Oracle / Mysql
数据持久化的技术:
IO JDBC XML ...
主流的持久层框架:
Hibernate
mybatis---->apache产品
JPA(由EJB 3.0软件专家组开发,奢侈,豪华的解决方案)--->Oracle
TopLink---->Oracle(DBA专业管理员)
JSF(JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架)
JDO(JDO(Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。)
2.Hibernate:ORM(对象关系映射)
一种经典的实现,持久层的框架。解决了面向对象语言与关系数据库不匹配的现象。
3.Hibernate.cfg.xml文件中:
格式化sql语句:
<property name="format_sql"> true </property>
创建+更新:
<property name="hbm2dd1.auto">update</property>
4.Hibernate三态:
A.瞬时态/临时态:
用户使用new关键字创建的对象,此时对象在内存中保存,数据中没有相关记录,session中也没有缓冲信息;
B.持久态:
当调用session中的持久化方法(save或save Or Update)时,对数据进行持久化,数据库中存在相应记录,并且seesion中也有对象的缓存信息;
C.游离态/离线状态:
由于session的关闭或清空导致对象脱离了session的管辖,数据库中存在相应的记录,但session中没有对象的缓存信息
5.操作Oracle数据库:
<id name="id">
<generator class="sequence">
<param name="sequence">
seq_id_supervision
</param>
</generator>
</id>
6.hbm.xml中:
cascude(级联):
save:级联新增
delete:级联删除
save-update:级联新增或修改
all:所有操作都级联
none:不级联
eg:cascude="all"
7.hbm.xml中:
inverse(控制反转):
代表关系维护的控制权是否反转,如果inverse值为true则代表将关系维护的控制权交与对方
eg:inverse="true"
8.hbm.xml中:
constrained(约束的):
eg:constrained="true",则代表一定得在这个属性对应的表中有数据并对应。
9. 一对多情况下在一的一方,inverse设置为true,cascade设置为none或不设置,本表数据添加成功,另一个表数据添加失败,console不报错;(没有维护权限,添加数据不会报错)
一对多情况下在一的一方,inverse设置为false,cascade设置为none或不设置,本表数据添加成功,另一个表数据添加失败,console报错。(拥有维护权限,添加数据会报错)
一对多情况下在一的一方,inverse设置为false,cascade设置,本表数据添加成功,另一个表数据添加成功,外键添加成功,console不报错。(拥有维护权限,同时又有级联,添加成功)
一对多情况下在一的一方,inverse设置为true, cascade设置,本表数据添加成功,另一个表数据添加成功,外键添加失败,console不报错。(没有维护权限,但有级联,本表数据添加成功,但另一个表外键会添加失败)
eg:
TestCode:
package cn.zzsxt.test3; import org.hibernate.Session;
import org.hibernate.Transaction; import cn.zzsxt.entity3.City;
import cn.zzsxt.entity3.Province;
import cn.zzsxt.utils.HibernateUtil; public class TestOneToMany {
public static void main(String[] args) {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction(); City c1=new City();
City c2=new City();
c1.setCityName("郑州");
c2.setCityName("平顶山");
Province p1=new Province();
p1.setProvinceName("河南");
p1.getCities().add(c1);
p1.getCities().add(c2); session.save(p1);
tx.commit();
session.close(); }
}
10.String sql=" ";
sql中不能出现*不然报错
11.引号内不能直接加引用类型数据否则报错,基本类型不会,必须使用query.setString()方法赋值,从0开始,0代表第一个
.
最新文章
- maven依赖查询地址
- 【初学者教程】在电脑上安装Python,写第一个程序
- Nodejs基础:路径处理模块path总结
- SVN——配置和安装
- java中的注解
- PDF 补丁丁 0.4.3.1342 测试版发布:修复崩溃问题
- How do you build a database?
- CentOS 中PHP开启 GD功能
- Iptables網路連線限制及攻擊防護和相關設定
- redis php 实例
- unity3d ppsspp模拟器中的post processing shader在unity中使用
- Api接口通用安全策略及实现-OSS.Core
- vijos1056题解
- JVM笔记6-垃圾回收概述
- [SCOI2009]生日快乐
- jQuery中$.each()方法的使用
- centos su命令
- Cocos2dx3.0 TextField 输入中文的问题
- Android之ListView和GridVIew加载图片
- 学习认识Spring原理