界面获取数据---封装对象(业务逻辑)--调用dao(数据保存)--SQL(结构化查询语言)
Strut1/2 --Hibernate(将对象直接保存)
Hibernate基于JDBC
Jar,可以官网下载(4.1)完毕,可以直接复制到项目的WEB-INF/lib即可
可以用于B/S结构或者C/S结构
hibernate.cfg.xml配置文件,保存用户连接数据库的信息,系统配置信息
HibernateSessionFactory类可以获取SessionFactory
SessionFactory生产Session
Session可以进行get()/save()/update()/delete()
Session可以返回一个Query对象,然后返回List集合结果
MyEclipse Database Explorer工具,可以连接各种类型的数据库
ID:native—将Id赋值授权数据库管理,根据数据库进行自动选择自增原理
assigned –ID由程序来控制
数据持久化:将瞬时状态和持久状态相互转换的一个过程。
数据之间的关系:
1-1:员工和身份信息
1-N:部门和员工之间
1.在一方配置(修改实体类--将某一属性修改成对象、
修改对应的hbm.xml-- 使用many2one标签,将普通的属性改成一个对象)
2.在多方配置(添加一个Set集合、
修改对应的hbm.xml-- 使用Set标签配置集合)
N-N:学生和课程
Lazy:true false
Cascade:all、delete、save-update、none
主键管理方式:
由程序进行管理:assigned
由Oracle数据库进行管理:sequence
使用序列来生成主键时,数据类型需要Long、Integer、Short、String类型
使用Dept表时,需要修改表中主键number(2)=>number(4);
对应的实体类型,Byte=>Integer
Long(long)、Integer(int)、Short(short)之间有什么区别?
HQL:
String sql="from Emp";
String sql="select e from Emp e";
String sql="select e.ename,e.job,e.dept from Emp e";
String sql="select new Emp(e.ename,e.job,e.dept) from Emp e ";
String sql="select new Emp(e.ename,e.job,e.sal,e.dept) from Emp e order by e.sal desc";
String sql="select new Emp(e.ename,e.job,e.sal,e.dept) from Emp e where e.sal>1000";
String sql="select new Emp(e.ename,e.job,e.sal,e.dept) from Emp e order by e.empno";
String sql="select new Emp(e.ename,e.job,e.sal,e.dept) from Emp e
where e.ename=:ename and e.sal>:sal";
分页查询:query.setFirstResult((pageNo-1)*pageCount);
query.setMaxResults(pageCount);
select e from Emp e where e.ename='WARD' or ’1’=’1’