Java面試題總結JDBC 和Hibernate

      網友投稿 747 2022-05-30

      全文字數: 1202

      閱讀時間: 大約4 分鐘

      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)一對多的標簽為 ;多對多的標簽為

      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 修改*********************/

      Java面試題總結之JDBC 和Hibernate

      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

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:DAOS 分布式異步對象存儲|Pool
      下一篇:并發編程之臨界區\阻塞\非阻塞\死鎖\饑餓\活鎖
      相關文章
      亚洲精品免费观看| 亚洲午夜视频在线观看| 亚洲人成网站日本片| 亚洲AV无码乱码国产麻豆| 区久久AAA片69亚洲| 亚洲中文字幕无码一久久区| 国产精品V亚洲精品V日韩精品| 亚洲国产精品综合久久一线| 另类专区另类专区亚洲| 亚洲第一页日韩专区| 亚洲视频在线精品| 国产精品亚洲不卡一区二区三区| 亚洲一级特黄大片无码毛片| 国产亚洲人成A在线V网站| 狠狠亚洲婷婷综合色香五月排名| 国产亚洲人成A在线V网站 | 在线精品亚洲一区二区| 亚洲色欲色欱wwW在线| 亚洲精华液一二三产区| 亚洲AV无码一区二区三区鸳鸯影院| 久久亚洲精品无码av| 亚洲精品色播一区二区| 香蕉视频亚洲一级| 久久精品国产精品亚洲下载| 亚洲女初尝黑人巨高清| 亚洲av无码不卡一区二区三区| 亚洲一级二级三级不卡| 亚洲国产精品张柏芝在线观看| 亚洲AV无码一区二区三区在线| 亚洲综合av一区二区三区不卡| 亚洲国产欧美国产综合一区| 亚洲AV无码乱码在线观看性色扶| 国产精品V亚洲精品V日韩精品| 久久亚洲国产精品一区二区| 99ri精品国产亚洲| 精品日韩99亚洲的在线发布| 亚洲av永久无码| 久久久精品国产亚洲成人满18免费网站 | 亚洲国产一成久久精品国产成人综合| 亚洲免费无码在线| 亚洲AV永久无码精品成人|