考试及复习

脏检查以及刷新缓存
1.脏检查是事务提交的时候进行的

2.刷新缓存:刷新缓存的事情就是脏检查
两种方式:
方式一:事务提交
方式二:session.flush();

3.关于HQL
from Dept 检索所有部门的信息
select d from cn.happy.entity.Student d 检索所有部门的信息 很2的写法
select d from Dept d

4.详解HQL
A.setParameter( )方法用于绑定任意类型的参数
B.setParameter( )有重载的方法
C.setProperties( )有重载的方法
D.setProperties( )

6.
<hibernate-mapping package="cn.jbit.hibernatedemo.entity">
<class name="Emp" table="EMP" schema="scott"> scott用户
<id name="empNo" column="EMPNO" type="int/java.lang.Integer">
<generator class="assigned"/>
</id>
<property name="salary" type="java.lang.Double" column="SAL"/>
<property name="hireDate" type="java.util.Date"/>
<many-to-one Emp多一方
name="dept"
column="DEPTNO"
class="Dept"
/>
</class>
--OOP程序端
public class Emp{
private Dept dept;
}

---SQL端
DEPTNO
7.inverse
解析:维护关联关系
true: 自己不维护关联关系,对方维护
false:自己维护关联关系

8.延迟加载 lazy hibernate 3.6.10版 hibernate 5
分类
类级别 true(默认),false
一对多和多对多 true(default),false,extra(加强延迟加载)
多对一(没有set) proxy(default),no-proxy,false

9.component组件映射
<hibernate-mapping package="cn.happy.component">
<class name="EmpInfo" table="EMPINFO">
<id name="eid" column="EID">
<generator class="native"></generator>
</id>
<property name="ename" column="ENAME" type="string"></property>
<component name="ehome" class="EmpHomeAddress">
<parent name="empinfo"/>
<property name="ehomestreet" column="EHOMESTREET" type="string"></property>
<property name="ehomecity" column="EHOMECITY" type="string"></property>
<property name="ehomeprovince" column="EHOMEPROVINCE" type="string"></property>
<property name="ehomezipcode" column="EHOMEZIPCODE" type="string"></property>
</component>
</class>
</hibernate-mapping>

10.一个意外 ExecutorType
public final enum org.apache.ibatis.session.ExecutorType {

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType SIMPLE;

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType REUSE;

// Field descriptor #8 Lorg/apache/ibatis/session/ExecutorType;
public static final enum org.apache.ibatis.session.ExecutorType BATCH;
11.HQL的连接查询
A.inner join 或 join用于内连接
B.inner join fetch或 join fetch用于迫切内连接
C.left outer join fetch 或 left join fetch用于迫切左外连接

12.批量处理数据

方式一:
使用HQL语句
原理: executeUpdate
01.批量插入数据
@Test
public void testInsert(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
String hql="insert into Dept(deptName) select d.deptName||d.deptNo from Dept d where d.deptNo>0";
session.createQuery(hql).executeUpdate();
tx.commit();
}

方式二:JDBCAPI
//使用JDBC API进行批量修改
public void testUpdateUseJDBC(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
Work work=new Work() {
@Override
public void execute(Connection connection) throws SQLException {
String sql="update DEPTY2160New set deptName=? where deptNo>?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "财务部2");
ps.setInt(2, 1);
ps.executeUpdate();
}
};
session.doWork(work);
tx.commit();
}

方式三: 使用Session进行批量操作

public void testAdd(){
Session session = HibernateUtil.getSession();
Transaction tx=session.beginTransaction();
Emp emp=null;
for (int i = 0; i < 10000; i++) {
emp=new Emp(i, "emp"+i);
session.save(emp);
if (i%30==0) {
session.flush();
session.clear();
}
}
tx.commit();
}

little tip:
(1)使用HQL进行批量操作 数据库层面 executeUpdate()
(2)使用JDBC API进行批量操作 数据库层面
(3)使用Session进行批量操作 会进缓存

little tip2:
C.使用Session进行批量操作,数据会被加载到Session缓存,需注意刷新并清空缓存
D.使用Session进行批量操作,适用于需要通过代码处理的复杂的业务逻辑场景

13. 成功要素
1.自我暗示
A对 垃圾
B对 NO1

2.复习与预习
A队
第二天复习
一周后:20%
B队
当天复习

一周后:70%

14.HQL面向的是对象和属性,不是表和字段
关于HQL的聚合函数使用,说法正确的是(ABCD )。
A.select count(*) from Dept d用于统计部门个数
B.select sum(e.salary) from Emp e用于汇总员工工资总额
C.select max(e.hiredate) from Emp e用于找到最新入职的员工的入职时间
D.select min(e.hiredate) from Emp e用于找到最早入职的员工的入职时间

15.原生SQL查询和命名查询

Query query=session.createQuery(hql)
SQLQuery query=session.createSQLQuery(sql)

1.原生SQL查询
@Test
//原生SQL执行
public void testClassicSQL(){
SQLQuery query = session.createSQLQuery("select * from deptY2160new").addEntity(Dept.class);
List<Dept> list = query.list();
for (Dept dept : list) {
System.out.println(dept.getDeptName());
}
tx.commit();
}

2.命名查询
<!-- -原生SQL NullPointException -->
<sql-query name="selectEmpByDetpNoClassicSQL">
<return alias="e" class="Emp" ></return>
select {e.*} from EmpY2160new e where deptNo=:deptNo
</sql-query>

测试类
public void testNamedClassicSQL(){
Query query = session.getNamedQuery("selectEmpByDetpNoClassicSQL");
List<Emp> list = query.setParameter("deptNo", 1).list();
/* for (Emp emp : list) {
System.out.println(emp.getEmpName());
}*/
tx.commit();
}

16.Hibernate常见注解
@Id
@Column
@Table
@Entity
@GeneratedValue
@ManyToOne
@JoinColumn

/**
* 部门类
* @author Happy 2016年1月17日19:40:56
*
*/
@Entity 标识一个类是 持久化类
@Table(name="DeptY2160")
public class Dept {
@Id 持久化类的标识
Hibernate_Session

@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_gen")
定义自己的序列生成器
@SequenceGenerator(name="seq_gen",sequenceName="SEQ_Num",allocationSize=1,initialValue=1)
private Integer deptNo;
private String deptName;
@OneToMany(mappedBy="dept",cascade={CascadeType.ALL})
/* @Fetch(FetchMode.JOIN)
@LazyCollection(LazyCollectionOption.FALSE)*/
private Set<Emp> emps=new HashSet<Emp>();
public Set<Emp> getEmps() {
return emps;
}
public void setEmps(Set<Emp> emps) {
this.emps = emps;
}
public Dept(Integer deptNo, String deptName) {
this.deptNo = deptNo;
this.deptName = deptName;
}
public Dept() {
}
public Integer getDeptNo() {
return deptNo;
}
public void setDeptNo(Integer deptNo) {
this.deptNo = deptNo;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}

17.主键生成策略
@GeneratedValue用于定义主键值的生成策略 ,相当于native

时间: 2024-08-04 07:28:46

考试及复习的相关文章

《程序设计基础》考试大纲 复习-C语言

一    程序设计基础知识 了解程序和程序语言的概念以及程序设计的步骤.算法的概念.基本特征和 表示:理解程序的三种基本结构.结构化程序设计方法;熟悉几种常见的算法描 述方法:如自然语言.流程图.N-S 流程图及伪代码等. 程序是为了实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.                          计算机程序是由数据结构和算法构成的. 程序语言是指被设计为在计算机上使用的,用于设计开发程序.定义算法或数据结构的一种语言规范 算法的概念 算法是对解决

2020年出版专业技术人员职业资格考试,历年真题,考前复习,考试大纲,视频课程

各出版社.期刊社.新媒体单位.网络出版单位: 从2001年8月1日起,国家对出版专业技术人员实行职业资格制度,纳入全国专业技术人员职业资格制度的统一规划.同时在2016年3月10日,由国家新闻出版广电总局.中华人民共和国工业和信息化部联合发布的<网络出版服务管理规定>中,第二章第九条明确规定,从事网络出版服务单位,必须有8名以上具有<中华人民共和国出版专业技术人员职业资格证书>人员,其中中级以上人员不少于3名.<中华人民共和国出版专业技术人员职业资格证书>是传统出版行业

浙江大学软件学院三维动画与交互技术考试概念整理

第一讲 1.    增强现实技术AR: --融合了三维动画.立体视觉和图像处理: --建模.渲染.位置标定.图像融合: 2.    OpenGL是一种用于创建实时3D图像的编程接口. 3.    三维这个术语表示一个正在描述或显示的物体具有三维维度:宽度.高度.深度: --计算机3D图形实质上也是平面的: --在计算机屏幕上显示的二维图像,提供深度(或第三维)的错觉: 2D+透视 = 3D 透视使人产生深度的错觉. 4.    真正的3D是通过人的两只眼睛观察同一个物体,在视网膜上生成具有视差的

网络工程师考试上午题如何提高正确率

网络工程师考试是全国计算机技术与软件水平考试的一项中级资格考试,通过考试的合格人员能根据应用部门的要求进行网络系统的规划.设计和网络设备的软硬件安装调试工作,能进行网络系统的运行.维护和管理,能高效.可靠.安全地管理网络资源,作为网络专业人员对系统开发进行技术支持和指导,具有工程师的实际工作能力和业务水平,能指导网络管理员从事网络系统的构建和管理工作.网络工程师考试是软考的一大热门,怎样才能顺利通过考试是广大考生都想知道的,下面希赛软考学院为您带来网络工程师备考锦囊之答题思路篇,教您上午题如何答

java 计算机二级考试试卷网址

http://www.233.com/ncre2/JAVA/moniti/201610/30113546874.html 考试试卷 复习网址 http://wenku.baidu.com/link?url=ZGhOsn0NH5OZ41c3KwAcpkNo4IVgaopD1t_wgLvrtUGlr9noC8KEYWAhkA4_aRN4JqMPBbZw1v-Tm6NpWBDdbqyteNHwrOj2eydS8h8_si_

BEC和托业的区别 公共英语等级考试

I.考试简介 考试简介 BEC剑桥商务英语证书考试 TOEIC托业考试 研发机构 剑桥大学外语考试中心ESOL,研发过雅思考试 美国教育考试服务中心ETS,研发过托福考试 进入中国 1993年进入中国 2002年进入中国 享有盛誉 外企通行证 全球最大商务和职业英语考试 •进入沪江BEC分站>>   •进入沪江托业分站>>   •进入BEC中国20周年专题>> II.考试难度 说明:从本质上来说,BEC和托业考试与四六级.专四专八和托福雅思都不具有比较性.但是为了方便大

第九届CDA考试状元访谈——LEVEL 2 大数据方向

第九届CDA数据分析师认证考试,在刚刚过去的2018年12月底圆满地落下了帷幕. 近日,我们采访了在本届考试中名列前茅的几位优秀学员,在上一篇中我们采访了Level 1 的状元,(点击查看上篇采访),本篇中采访了Level 2 大数据方向的前三甲,那么他们又是如何备考和学习的呢? 下面让我们来一睹他们的风采吧! Level 2 大数据 · 状元  胡仁飞 2009年毕业于浙江大学,之后一直在通信行业从事相关工作,先后担任过工程项目管理 .无线网络优化管理.经营分析师等. 1. 目前从事的工作 目

now code——处女座的期末复习

题目描述 快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行复习,考试的起始时间为bi,处女座为了考试可以不吃饭不睡觉,处女座想知道他能否复习完所有的科目(即在每一门考试之前复习完该科目).每一门课的考试时间都为两小时. 输入描述: 第一行一个整数n 第二行n个整数a1,a2,-,an,表示每门课需要复习的时间 第三行n个整数b1,b2,-,bn,表示每门课考试的时间 1<=n<=105 0<=ai<=109 0<=bi<=109 输出描述: 如

软件工程课后总结与反思

早就听说罗杰老师的软件工程课是实用性与理论性相结合的课,在这门课上不单单只是简单的编写代码,调试程序,还要做到迭代开发,撰写文档等实际软件工程中所必须要完成的工作.为了锻炼自己的能力,学到一些不一样的知识,这学期我选择了罗杰老师的软件工程课. 课程大概可以分为三个部分,个人项目,双人组队项目,团队项目(五人). 个人项目强调个人能力,包括编写代码的能力,创造力,想象力等等,罗杰老师说过:在实际开发软件的过程中,很少是"单兵作战",但个人能力是团队的基石,只能个人能力出众,团队水准才能不