Oracle&JDBC&Hibernate面试26问
2012-11-10 19:42
344 查看
1、JDBC连接数据库6步
1. Loadthe JDBC Driver
2. Establishthe Database Connection
3. Createa Statement Object
4. Executea Query
5. Processthe Results
6. Closethe Connection
2、事务的4大特性
答:原子性A,一致性C,隔离性I,永久性D
3、select count(*) from student 和select count(id) from student 之间的区别。
答案:
select count(*) 统计所有学生的记录个数,包括空记录。
Select count(Id) 统计所有学生的记录个数,不包括null记录。
4、假设现在有表system.table1,表中有三个字段:id(数值型)、name(字符型)、age(数值型)写出SQL语句完成如下功能:在表中查出年龄大于20,且名字以“王”开头的记录,并且按照年龄的倒叙排列出来(年龄大的在前面)。
答案:Select *from system.table1 where age>20 and name like ‘王%’ order by age DESC
5、创建CUSTOMERS表,字段为:ID:(非空,主键)bigint,NAME:(非空)varchar,AGE:int类型;创建ORDERS表,字段为:ID:(非空,主键,)bigint,ORDER_NUMBER:(非空)varchar,PRICE:double,CUSTOMER_ID :(外键)bigint,设置级连删除;
答案:createtable CUSTOMBERS(
ID bigint not null,
NAME varchar(15),
AGE int,
primary key (ID)
);
create table ORDERS(
ID bigint not null,
ORDER_NUMBER varchar(15) not nulll,
PRICE double precision,
CUSTOMER_ID bigint,
primary key(ID),
);
alter table ORDERS addconstraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID) ondelete cascade;
6、使用左外连接查询,ORDERS和CUSTOMERS 表,
答案:selectc.ID, o.CUSTOMER_ID,c.NAME, o.ID ORDER_ID,ORDER_NUMBER from CUSTOMERS c leftouter join ORDERS o no c.ID=o.CUSTOMER_ID;
7、简述数据库事务的生命周期?(可画流程图)
答案:
8、deletefrom tablea & truncate table tablea的区别 drop
答:truncate 语句执行速度快,占资源少,并且只记录页删除的日志;
delete 对每条记录的删除均需要记录日志
9、Hibernate的检索方式
答:①导航对象图检索 ②OID检索 ③HQL检索 ④QBC检索 ⑤本地SQL检索
10、持久化对象的三种状态,代表含义。
答:临时状态——刚用new语句创建,未被持久化,不处于session的缓存中。
持久化状态——已经被持久化,处于session的缓存中。
游离态——已经被持久化,但不处于session的缓存中。
11、三种检索策略是什么,分别适用于哪种场合?
答:立即检索
优点:对应用程序完全透明,
缺点:select语句数目多。
适用:类级别。
延迟检索
优点:由应用程序决定加载哪些对象,可以避免执行多余的select语句以及避免加载不需要访问的对
象,节省内存空间,提高检索效率。
缺点:应用程序如果要访问游离态的代理类实例,必须保证它在持久化时已经被初始化。
适用:一对多或多对多关联。应用程序不需要立即访问或者根本不会访问的对象。
迫切左外连接检索:
优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序都可以方便的从一个对象导航到另一个与它相关联的对象。使用了外连接,select语句数目少。
缺点:可能会加载程序不许要访问的对象。复杂的数据库表连接形象检索性能。
适用:一对一或多对一关联。应用程序需要立即访问的对象。数据库系统具有良好的表连接性能。
12、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)
答:域模型是面向对象的,关系模型是面向关系的。
域模型中有继承关系,关系模型中不能直接表示继承关系。
域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。
域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照one方。
域模型提倡精粒度模型,关系模型提倡粗粒度模型。
13、映射继承关系的三种方式?
答:(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。
(2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对应的字段,还包括根类的所有子类属性对应的字段。
(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对应的字段,子类的表参照父类对应的表。
14、Session的find()方法以及Query接口的区别。
答:Session类的find()方法以及Query接口都支持HQL检索方式。
这两者的区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定参数的功能,而且在Hibernate3.x版本中,已经淘汰了find()方法;而Query接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。
15、映射一对多双向关联关系中设置SET元素,请写出级联保存和更新、级联删除应在set元素中需要设置那些子元素?(标明关系、避面重复执行多余SQL语句)
Name cascade key column one-to-many inverse
17、持久化类的类名是Customer.java,写出相应的映射文件名
。
答:Customer.hbm.xml
18、Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。请简述Session的特点有哪些?
答:(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session
中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
19、Hibernate中采用XML文件来配置对象-关系映射的优点有那些?
答:Hibernate既不会渗透到上层域模型中,也不会渗透到下层数据模型中。软件开发人员可以独立设计域
模型,不必强迫遵守任何规范。数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。对象-关系映射不依赖于任何程序代码,如果需要修改对象-关系映射,只需修改XML文件,不需要修改任何程序,提高了软件的灵活性,并且使维护更加方便。
20、在Hibernate应用中Java对象的状态有哪些?
答:临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session的缓存中。处于临时
状态的Java对象被称为临时对象。
持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。
游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。
21、叙述Session的缓存的作用
答:(1)减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数
据的速度快多了,因此Session的缓存可以提高数据访问的性能。
(2)保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。
22、比较Hibernate的三种检索策略优缺点;
答:1立即检索;
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象;
缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪费许多内存空间;
2延迟检索:
优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;
缺点:应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;
3 迫切左外连接检索
优点:1对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。2使用了外连接,select语句数目少;
缺点:1 可能会加载应用程序不需要访问的对象,白白浪费许多内存空间;2复杂的数据库表连接也会影响检索性能;
23、多个事务并发运行时的并发问题有哪些?
答:第一类丢失更新;脏读;虚读;不可重复读;第二类丢失更新;
24、session的清理和清空有什么区别?
答:session清理缓存是指按照缓存中对象的状态的变化来同步更新数据库;清空是session关闭;
25、请简述Session的特点有哪些?
答:(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session
中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
1. Loadthe JDBC Driver
2. Establishthe Database Connection
3. Createa Statement Object
4. Executea Query
5. Processthe Results
6. Closethe Connection
2、事务的4大特性
答:原子性A,一致性C,隔离性I,永久性D
3、select count(*) from student 和select count(id) from student 之间的区别。
答案:
select count(*) 统计所有学生的记录个数,包括空记录。
Select count(Id) 统计所有学生的记录个数,不包括null记录。
4、假设现在有表system.table1,表中有三个字段:id(数值型)、name(字符型)、age(数值型)写出SQL语句完成如下功能:在表中查出年龄大于20,且名字以“王”开头的记录,并且按照年龄的倒叙排列出来(年龄大的在前面)。
答案:Select *from system.table1 where age>20 and name like ‘王%’ order by age DESC
5、创建CUSTOMERS表,字段为:ID:(非空,主键)bigint,NAME:(非空)varchar,AGE:int类型;创建ORDERS表,字段为:ID:(非空,主键,)bigint,ORDER_NUMBER:(非空)varchar,PRICE:double,CUSTOMER_ID :(外键)bigint,设置级连删除;
答案:createtable CUSTOMBERS(
ID bigint not null,
NAME varchar(15),
AGE int,
primary key (ID)
);
create table ORDERS(
ID bigint not null,
ORDER_NUMBER varchar(15) not nulll,
PRICE double precision,
CUSTOMER_ID bigint,
primary key(ID),
);
alter table ORDERS addconstraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID) ondelete cascade;
6、使用左外连接查询,ORDERS和CUSTOMERS 表,
答案:selectc.ID, o.CUSTOMER_ID,c.NAME, o.ID ORDER_ID,ORDER_NUMBER from CUSTOMERS c leftouter join ORDERS o no c.ID=o.CUSTOMER_ID;
7、简述数据库事务的生命周期?(可画流程图)
答案:
8、deletefrom tablea & truncate table tablea的区别 drop
答:truncate 语句执行速度快,占资源少,并且只记录页删除的日志;
delete 对每条记录的删除均需要记录日志
9、Hibernate的检索方式
答:①导航对象图检索 ②OID检索 ③HQL检索 ④QBC检索 ⑤本地SQL检索
10、持久化对象的三种状态,代表含义。
答:临时状态——刚用new语句创建,未被持久化,不处于session的缓存中。
持久化状态——已经被持久化,处于session的缓存中。
游离态——已经被持久化,但不处于session的缓存中。
11、三种检索策略是什么,分别适用于哪种场合?
答:立即检索
优点:对应用程序完全透明,
缺点:select语句数目多。
适用:类级别。
延迟检索
优点:由应用程序决定加载哪些对象,可以避免执行多余的select语句以及避免加载不需要访问的对
象,节省内存空间,提高检索效率。
缺点:应用程序如果要访问游离态的代理类实例,必须保证它在持久化时已经被初始化。
适用:一对多或多对多关联。应用程序不需要立即访问或者根本不会访问的对象。
迫切左外连接检索:
优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应用程序都可以方便的从一个对象导航到另一个与它相关联的对象。使用了外连接,select语句数目少。
缺点:可能会加载程序不许要访问的对象。复杂的数据库表连接形象检索性能。
适用:一对一或多对一关联。应用程序需要立即访问的对象。数据库系统具有良好的表连接性能。
12、ORM解决的不匹配问题(域模型与关系模型之间存在的不匹配)
答:域模型是面向对象的,关系模型是面向关系的。
域模型中有继承关系,关系模型中不能直接表示继承关系。
域模型中有多对多关联关系,关系模型中通过连接表来表示多对多关联关系。
域模型中有双向关联关系,关系模型中只有单向参照关系,而且总是many参照one方。
域模型提倡精粒度模型,关系模型提倡粗粒度模型。
13、映射继承关系的三种方式?
答:(1)继承关系树的每个具体类对应一张表:在具体类对应的表中,不仅包含和具体类属性对应的字段,还包括与具体类的父类属性对应的字段。
(2)继承关系树的根类对应一张表:在根类对应的表中,不仅包括根类属性对应的字段,还包括根类的所有子类属性对应的字段。
(3)继承关系树中的每个类对应一张表,每个表中只包括和这个类本身属性对应的字段,子类的表参照父类对应的表。
14、Session的find()方法以及Query接口的区别。
答:Session类的find()方法以及Query接口都支持HQL检索方式。
这两者的区别在于,前者只是执行一些简单HQL查询语句的便捷方法,它不具有动态绑定参数的功能,而且在Hibernate3.x版本中,已经淘汰了find()方法;而Query接口才是真正的HQL查询接口,它提供了以上列出的各种查询功能。
15、映射一对多双向关联关系中设置SET元素,请写出级联保存和更新、级联删除应在set元素中需要设置那些子元素?(标明关系、避面重复执行多余SQL语句)
Name cascade key column one-to-many inverse
17、持久化类的类名是Customer.java,写出相应的映射文件名
。
答:Customer.hbm.xml
18、Session接口是Hibernate应用使用最广泛的接口。Session也被称为持久化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。请简述Session的特点有哪些?
答:(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session
中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
19、Hibernate中采用XML文件来配置对象-关系映射的优点有那些?
答:Hibernate既不会渗透到上层域模型中,也不会渗透到下层数据模型中。软件开发人员可以独立设计域
模型,不必强迫遵守任何规范。数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范。对象-关系映射不依赖于任何程序代码,如果需要修改对象-关系映射,只需修改XML文件,不需要修改任何程序,提高了软件的灵活性,并且使维护更加方便。
20、在Hibernate应用中Java对象的状态有哪些?
答:临时状态(transient):刚刚用new语句创建,还没有被持久化,不处于Session的缓存中。处于临时
状态的Java对象被称为临时对象。
持久化状态(persistent):已经被持久化,加入到Session的缓存中。处于持久化状态的Java对象被称为持久化对象。
游离状态(detached):已经被持久化,但不再处于Session的缓存中。处于游离状态的Java对象被称为游离对象。
21、叙述Session的缓存的作用
答:(1)减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数
据的速度快多了,因此Session的缓存可以提高数据访问的性能。
(2)保证缓存中的对象与数据库中的相关记录保持同步。当缓存中持久化对象的状态发生了变换,Session并不会立即执行相关的SQL语句,这使得Session能够把几条相关的SQL语句合并为一条SQL语句,以便减少访问数据库的次数,从而提高应用程序的性能。
22、比较Hibernate的三种检索策略优缺点;
答:1立即检索;
优点:对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象;
缺点:1.select语句太多;2.可能会加载应用程序不需要访问的对象白白浪费许多内存空间;
2延迟检索:
优点:由应用程序决定需要加载哪些对象,可以避免可执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间;
缺点:应用程序如果希望访问游离状态代理类实例,必须保证他在持久化状态时已经被初始化;
3 迫切左外连接检索
优点:1对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便地冲一个对象导航到与它关联的对象。2使用了外连接,select语句数目少;
缺点:1 可能会加载应用程序不需要访问的对象,白白浪费许多内存空间;2复杂的数据库表连接也会影响检索性能;
23、多个事务并发运行时的并发问题有哪些?
答:第一类丢失更新;脏读;虚读;不可重复读;第二类丢失更新;
24、session的清理和清空有什么区别?
答:session清理缓存是指按照缓存中对象的状态的变化来同步更新数据库;清空是session关闭;
25、请简述Session的特点有哪些?
答:(1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。
(2)Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。
(3)在Session
中,每个数据库操作都是在一个事务(transaction)中进行的,这样就可以隔离开不同的操作(甚至包括只读操作)。
相关文章推荐
- Oracle&JDBC&Hibernate知识总结
- Oracle&JDBC&Hibernate知识总结
- JDBC+Hibernate将Blob数据写入Oracle
- hibernate、JDBC 实现 oracle ID 的自动增加 功能
- jdbc:oracle:thin:@localhost:1521:mydb,"book","test"
- oracle分别使用jdbc和hibernate的例子
- 面试 hibernate中的session和JDBC中collection的关系
- jbpm4工作于oracle之上hibernate.jdbc.batch_size的设置及问题
- 使用JDBC和Hibernate在oracle中插入和读取Blob数据的图片的java程序
- JDBC+Hibernate将Blob数据写入Oracle
- Oracle 存储过程,Hibernate 调用存储过程,JDBC调用存储过程,Oracle 动态SQL
- Jdbc&Hibernate&MyBatis&IBatis
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- ERROR JDBCExceptionReporter:234 - Table 'xxxxxxxx' doesn't exist hibernate无法自动创建表
- 基于Oracle&Hibernate&Spring,集合了多种常用方法,方便调用
- 使用JDBC和Hibernate来写入Blob型数据到Oracle中
- Oracle-26-内连接(等值、不等值连接、自然连接)&外连接(左外、右外、全连接)&using子句
- Struts,Spring,Hibernate三大框架的面试&笔试题
- Oracle:org.hibernate.exception.JDBCConnectionException: could not execute query
- java jdbc hibernate oracle,jdbc hibernate 保存之后主键值悬殊太大原因何在?