JDBC和Hibernate的區別


JDBC是Java資料庫連線的縮寫。它用於將您的應用程式連線到資料庫並進行事務處理。它是一個開源的Java API。

Hibernate也用於將您的應用程式連線到資料庫並進行資料庫相關的事務處理,但採用不同的方法。它具有一個物件關係對映庫,該庫將資料庫的表和列與Java物件對映。它支援在資料庫中進行面向物件程式設計。Hibernate提供HQL來訪問資料庫中的資料。

序號
關鍵點
JDBC
Hibernate

1

基本

它是一種資料庫連線技術

它是一個框架

2

延遲載入

不支援延遲載入

Hibernate支援延遲載入

3

事務管理

我們需要顯式地維護資料庫連線和事務。

Hibernate本身管理所有事務

4.

快取

我們需要編寫程式碼來實現快取

Hibernate提供兩種型別的快取

一級快取

二級快取


一級快取不需要額外的程式碼。

5.

效能

效能較低

高效能

Hibernate示例

@Entity
public class User {
   @Id
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class HibernateConnectionExample {
   public static void main(String[] args) {
      //get session factory to start transcation
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      User user = (User) session.get(User.class, new Integer(2));
      System.out.println("User ID= "+user.getId());
      System.out.println("User Name= "+user.getName());
      //Close resources
      tx.commit();
      sessionFactory.close();
   }
}

JDBC連線示例

class JDBCConnectionExample {
   public static void main(String a[]) {
      String url = "jdbc:oracle:thin:@localhost:1521:local";
      String user = "sys";
      String password = "abc123";
      String sql = "select * from user";
      Connection con=null;
      try {
         DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
         //Reference to connection interface
         con = DriverManager.getConnection(url,user,password);
         Statement st = con.createStatement();
         int respCode = st.executeUpdate(sql);
         con.close();
      }
      catch(Exception ex) {
         System.err.println(ex);
      }
   }
}

更新於:2020年7月14日

5000+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告