Java面试题总结之JDBC 和Hibernate
1、100 用户同时来访数据库,要采取什么技术?
答:采用数据库连接池。
2、什么是ORM?
答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将java 程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。
3、Hibernate 有哪5 个核心接口?
答:Configuration 接口:配置Hibernate,根据其启动hibernate,创建SessionFactory 对象;SessionFactory 接口:初始化Hibernate,充当数据存储源的代理,创建session 对象,sessionFactory 是线程安全的,意味着它的同一个实例可以被应用的多个线程共享,是重量级、二级缓存;Session 接口:负责保存、更新、删除、加载和查询对象,是线程不安全的,避免多个线程共享同一个session,是轻量级、一级缓存;Transaction 接口:管理事务;Query 和Criteria 接口:执行数据库的查询。
4、关于hibernate:
1)在hibernate 中,在配置文件中一对多,多对多的标签是什么;
2)Hibernate 的二级缓存是什么;
3)Hibernate 是如何处理事务的;
答:1)一对多的标签为<one-to-many> ;多对多的标签为<many-to-many>;
2)sessionFactory 的缓存为hibernate 的二级缓存;
3)Hibernate 的事务实际上是底层的JDBC Transaction 的封装或者是JTA
Transaction 的封装;默认情况下使用JDBCTransaction。
5、Hibernate 的应用(Hibernate 的结构)?
答:
//首先获得SessionFactory 的对象 SessionFactory sessionFactory = new Configuration().configure(). buildSessionFactory(); //然后获得session 的对象 Session session = sessionFactory.openSession(); //其次获得Transaction 的对象 Transaction tx = session.beginTransaction(); //执行相关的数据库操作:增,删,改,查 session.save(user); //增加, user 是User 类的对象 session.delete(user); //删除 session.update(user); //更新 Query query = session.createQuery(“from User”); //查询 List list = query.list(); //提交事务 tx.commit(); //如果有异常,我们还要作事务的回滚,恢复到操作之前 tx.rollback(); //最后还要关闭session,释放资源 session.close();
6、什么是重量级?什么是轻量级?
答:轻量级是指它的创建和销毁不需要消耗太多的资源,意味着可以在程序中经常创建和销毁session 的对象;重量级意味不能随意的创建和销毁它的实例,会占用很多的资源。
7、数据库的连接字符串?
答:
// MS SQL Server Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”). newInstance(); conn = DriverManager.getConnection(“jdbc: sqlserver ://localhost:1433;DatabaseName=pubs”,”sa”,””); //Oracle Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); conn = DriverManager.getConnection(“jdbc:oracle:thin: @localhost:1521:sid”, uid, pwd); //Mysql Class.forName(“com.mysql.jdbc.Driver”).newInstance(); conn = DriverManager.getConnection(“jdbc:mysql ://localhost:3306/pubs”,”root”,””); 处理中文的问题: jdbc:mysql://localhost:3306/pubs?useUnicode=true &characterEncoding=UTF-8
8、事务处理?
答:Connection 类中提供了3 个事务处理方法:setAutoCommit(Boolean autoCommit):设置是否自动提交事务,默认为自动提交事务,即为true,通过设置false 禁止自动提交事务;commit():提交事务;rollback():回滚事务。
9、Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
答:Java 中访问数据库的步骤如下:
1)注册驱动;
2)建立连接;
3)创建Statement;
4)执行sql 语句;
5)处理结果集(若sql 语句为查询语句);
6)关闭连接。
PreparedStatement 被创建时即指定了SQL 语句,通常用于执行多次结构相同的SQL 语句。
10、用你熟悉的语言写一个连接ORACLE 数据库的程序,能够完成修改和查询工作。
答:JDBC 示例程序如下:
public void testJdbc(){ Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try{ //step1:注册驱动; Class.forName("oracle.jdbc.driver.OracleDriver"); //step 2:获取数据库连接; con=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.0.39:1521:TARENADB", "sd0605","sd0605"); /************************查询************************/ //step 3:创建Statement; String sql = "SELECT id, fname, lname, age, FROM Person_Tbl"; ps = con.prepareStatement(sql); //step 4 :执行查询语句,获取结果集; rs = ps.executeQuery(); //step 5:处理结果集—输出结果集中保存的查询结果; while (rs.next()){ System.out.print("id = " + rs.getLong("id")); System.out.print(" , fname = " + 第35 页共59 页 rs.getString("fname")); System.out.print(" , lname = " + rs.getString("lname")); System.out.print(" , age = " + rs.getInt("age")); } /************************JDBC 修改*********************/ sql = "UPDATE Person_Tbl SET age=23 WHERE id = ?"; ps = con.prepareStatement(sql); ps.setLong(1, 88); int rows = ps.executeUpdate(); System.out.println(rows + " rows affected."); } catch (Exception e){ e.printStackTrace(); } finally{ try{ con.close(); //关闭数据库连接,以释放资源。 } catch (Exception e1) { } } }
Java面试题总结之JDBC 和Hibernate的更多相关文章
- Java面试题 OOAD & UML+XML+SQL+JDBC & Hibernate
二.OOA/D 与UML 部分:(共6 题:基础2 道,中等难度4 道) 96.UML 是什么?常用的几种图?[基础] 答:UML 是标准建模语言:常用图包括:用例图,静态图(包括类图.对象图和包图) ...
- HIbernate java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
[HIbernate]java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGe ...
- 【JAVA - SSM】之MyBatis与原生JDBC、Hibernate访问数据库的比较
首先来看一下原生JDBC访问数据库的代码: public static void main(String[] args) { // 数据库连接 Connection connection = null ...
- Java面试题:Hibernate的二级缓存与Hibernate多表查询
我们来看两个有关Java框架之Hibernate的面试题,这是关于Hibernate的常考知识点. 1.请介绍一下Hibernate的二级缓存 解题按照以下思路来回答: (1)首先说清楚什么是缓存: ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- Java面试题之基础篇概览
Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...
- 整理+学习《骆昊-Java面试题全集(上)》
★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...
- Java面试题全集(下)转载
Java面试题全集(下) 这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不 ...
随机推荐
- Javascript中setTimeout()以及clearTimeout( )的使用
setTimeout setTimeout( ) 是属于 window 的 method, 这是用来设定一个时间,时间到了, 就会执行一个指定的 方法.练习一:等候三秒才执行的 alert( )set ...
- 将Chrome调试器里的JavaScript变量保存成本地JSON文件
我写了一个系列的文章,主要用来搜集一些供程序员使用的小工具,小技巧,帮助大家提高工作效率. 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diag ...
- 第二周作业xml学习情况
1.xml简介 可扩展标记语言是一种很像超文本标记语言的标记语言. 它的设计宗旨是传输数据,而不是显示数据. 它的标签没有被预定义.您需要自行定义标签. 它被设计为具有自我描述性. 它是W3C的推荐标 ...
- docker新手入门(基本命令以及介绍)
Docker 的核心内容 镜像 (Image) 容器 (Container) 仓库 (Repository) Registry 用来保存用户构建的镜像 docker的开始使用: 1. docker ...
- 使用snapshot继续训练网络
注意:snapshots和weights不能同时使用 用预训练模型进行finetune是以下命令: ./build/tools/caffe train --solver=examples/XXX/le ...
- Activiti6简明教程
一.为什么选择Activiti 工作流引擎对比 二.核心7大接口.28张表 7大接口 (一)7大接口 RepositoryService:提供一系列管理流程部署和流程定义的API. RuntimeSe ...
- HTML 5 <a> 标签
href 属性 定义和用法 href 属性规定链接的目标地址. 如果未使用 href 属性,则 <a> 标签不是链接,而是链接的占位符. HTML 4.01 与 HTML 5 之间的差异 ...
- JavaEE-03 JSP数据交互02
学习要点 application pageContext JSP对象作用域 cookie application 作用 类似于系统的“全局变量”,用于在同一个服务器内的所有用于之间的数据共享,对于整个 ...
- 模拟--P1540 机器翻译
题目连接 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词 ...
- 乘法逆元-洛谷-P3811
题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式: 一行n,p 输出格式: n行,第i行表示i在模p意义下的逆元. 输入输出样例 输入样 ...