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已经是明日黄花,在这里就不 ...
随机推荐
- 生成hprof文件,用MAT进行分析
生成hprof文件可以在DDMS选中进程点击窗口左上角的"dump hprof file"按钮来直接生成,也可以通过在程序加代码中来生成 代码2: void generateHpr ...
- 洛谷 P1618 三连击(升级版)
题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢黄小U饮品完善题意 输入输出格 ...
- AIX 11203 ASM RAC安装
1:查看系统版本 [rac1:root:/hacmp/hacmp5.4/ha5.4/installp/ppc] oslevel -s 6100-06-06-1140 lslpp -al bos.adt ...
- JavaFX Chart设置数值显示
一.XYChart import javafx.application.Application;import javafx.geometry.NodeOrientation;import javafx ...
- 888. Fair Candy Swap@python
Alice and Bob have candy bars of different sizes: A[i] is the size of the i-th bar of candy that Ali ...
- 洛谷P1421 小玉买文具
这道题其实就是编程最基础的逻辑,没什么好讲的输入,输出就完了,非常简单! code: #include<cstdio> #include<iostream> using nam ...
- (二十)python 3 匿名函数
匿名函数lambda Python使用lambda关键字创造匿名函数.所谓匿名,意即不再使用def语句这样标准的形式定义一个函数.这种语句的目的是由于性能的原因,在调用时绕过函数的栈分配.其语法是: ...
- 稳定排序(sort+结构体)
#include<cstdio> #include<algorithm> #include<string.h> using namespace std; struc ...
- NOI模拟赛(3.13)Hike (远行)
Description Mirada生活的城市中有N个小镇,一开始小镇之间没有任何道路连接.随着经济发展,小镇之间陆续建起了一些双向的道路,但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇, ...
- Leetcode 224.基本计算器
基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 + 1 ...