1100 用户同时来访数据库,要采取什么技术?

答:采用数据库连接池。

2、什么是ORM

答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,ORM 是通过使用描述对象和数据库之间映射的元数据,将java 程序中的对象自动持久化到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。

3Hibernate 有哪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。

5Hibernate 的应用(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():回滚事务。

9Java 中访问数据库的步骤?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的更多相关文章

  1. Java面试题 OOAD & UML+XML+SQL+JDBC & Hibernate

    二.OOA/D 与UML 部分:(共6 题:基础2 道,中等难度4 道) 96.UML 是什么?常用的几种图?[基础] 答:UML 是标准建模语言:常用图包括:用例图,静态图(包括类图.对象图和包图) ...

  2. HIbernate java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z

    [HIbernate]java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGe ...

  3. 【JAVA - SSM】之MyBatis与原生JDBC、Hibernate访问数据库的比较

    首先来看一下原生JDBC访问数据库的代码: public static void main(String[] args) { // 数据库连接 Connection connection = null ...

  4. Java面试题:Hibernate的二级缓存与Hibernate多表查询

    我们来看两个有关Java框架之Hibernate的面试题,这是关于Hibernate的常考知识点. 1.请介绍一下Hibernate的二级缓存 解题按照以下思路来回答: (1)首先说清楚什么是缓存: ...

  5. 尚学堂Java面试题整理

    博客分类: 经典分享   1. super()与this()的差别? - 6 -  2. 作用域public,protected,private,以及不写时的差别? - 6 -  3. 编程输出例如以 ...

  6. JAVA面试题二

    JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...

  7. Java面试题之基础篇概览

    Java面试题之基础篇概览 1.一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,且public的类名必须与文件名相一致. 2.Ja ...

  8. 整理+学习《骆昊-Java面试题全集(上)》

    ★可以关注微信公众号,了解更多技术和行业信息 2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不 ...

  9. Java面试题全集(下)转载

    Java面试题全集(下)   这部分主要是开源Java EE框架方面的内容,包括hibernate.MyBatis.spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不 ...

随机推荐

  1. QTableWidget表头样式

    转载请注明出处:http://www.cnblogs.com/dachen408/p/7742680.html QTableView { background-color: rgba(255, 255 ...

  2. 备忘录:python 3在class中使用yield

    之前代码都是直接在函数级别使用yield,但封装class后如何使用yield很少遇到. 经过半天的学习,总算完成示例.代码没有什么特殊地方,仅仅作为一个工作项. 与生成器合作: ########## ...

  3. JavaScript-基础类型和运算符

    JavaScript-基础类型和运算符 P02.稍微了解 1.js代码需要编写到script标签中 <script type="text/javascript"> 此处 ...

  4. 网新恩普(W 笔试)

    选择题 1.一桶有黄色,绿色,红色三种,闭上眼睛抓取同种颜色的两个.抓取多少个就可以确定你肯定有两个同一颜色的球? 答案: 4次 1.最坏打算抓3次都是不同颜色的黄.绿.红,此时,三种颜色的球各抓了一 ...

  5. k8s集群之Docker安装镜像加速器配置与k8s容器网络

    安装Docker 参考:https://www.cnblogs.com/rdchenxi/p/10381631.html 加速器配置 参考:https://www.cnblogs.com/rdchen ...

  6. Mysql 访问远程数据库,报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost

    参考:http://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html 解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在loc ...

  7. python爬虫---从零开始(一)初识爬虫

    我们开始来谈谈python的爬虫. 1,什么是爬虫: 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫.互联网犹如一个大蜘蛛 ...

  8. JAVA中等待所有线程都执行结束(转2)

    场景: package com.java4all.mypoint; import java.util.concurrent.CountDownLatch; public class ThreadTes ...

  9. java使用数据库连接池

    连接池的实现方式是首先使用JNDI(JavaTM Naming and Directory Interface) 将数据源对象注册为一个命名服务,然后使用JNDI提供的服务接口,按照名称检索对应的数据 ...

  10. xcode中自定义log打印

    打印内容包括 在哪个文件中 ? 在哪个方法中? 将要执行什么操作?   // 此打印实现前提: // 1.在.pch文件中实现自定义log打印方法,log名换为LCLog // 2.定义一个宏obje ...