<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Hibernate 示例 – HelloWorld 示例逐步簡介 > 原文: [https://howtodoinjava.com/hibernate/hibernate-3-introduction-and-writing-hello-world-application/](https://howtodoinjava.com/hibernate/hibernate-3-introduction-and-writing-hello-world-application/) **Hibernate** 由 Gavin King 在 2001 年啟動,它是使用 EJB2 樣式實體 bean 的替代方法。 當時,它的任務是通過簡化復雜性并允許缺少功能來為 EJB2 提供更好的持久化。 Hibernate 使用其映射文件和配置文件來實現其目標。 隨著 JDK 1.5 在 Java 社區中引入**注解**,Hibernate 社區開始致力于支持注解的 [Hibernate 3](http://docs.jboss.org/hibernate/orm/3.3/api/ "hibernate 3")。 Hiberate 的當前版本是[Hiberate 5](https://howtodoinjava.com/spring5/webmvc/spring5-mvc-hibernate5-example/)。 在帶有注解的 **Hiberate 示例中**,我們將學習有關 Hiberate 的更多信息,并逐步為初學者構建第一個正在運行的示例應用。 ```java Table of Contents What is hibernate How hibernate works Relation of hibernate with JPA Hibernate HelloWorld example ``` ## 什么是 Hibernate Hibernate 是 Java 的開源[對象關系映射](https://en.wikipedia.org/wiki/Object-relational_mapping "object relational mapping")工具。 它提供了一個框架,用于將面向對象的域模型映射到傳統的[關系數據庫](https://en.wikipedia.org/wiki/Relational_database "Relational database")。 Hibernate 不僅負責從 Java 類到數據庫表(以及從 Java 數據類型到 SQL 數據類型)的映射,而且還提供數據查詢和檢索功能,并且可以顯著減少開發時間,否則將花費大量時間在 SQL 和 JDBC 中進行手動數據處理 。 通過配置 XML 文件或使用 Java [注解](https://howtodoinjava.com/hibernate/hibernate-jpa-2-persistence-annotations-tutorial/)將 Java 類映射到數據庫表。 提供了用于安排類之間的[一對多](https://howtodoinjava.com/hibernate/hibernate-one-to-many-mapping-using-annotations/)和[多對多](https://howtodoinjava.com/hibernate/hibernate-many-to-many-mapping-using-annotations/)關系的設施。 除了管理對象之間的關聯之外,Hibernate 還可以管理**自反關聯**,其中對象與自己類型的其他實例具有一對多關系。 ## Hibernate 如何運作 Hiberate 不會妨礙我們; 也不會迫使我們改變對象的行為方式。 這些對象無需實現任何神奇的接口即可擁有持久的能力。 我們要做的全部工作是將一些元數據放入**注解**的形式,這些注解告訴 hibernate 在與數據庫映射時如何使用它們。 在運行時,hibernate 讀取這些注解并使用此信息來構建查詢以發送到某些關系數據庫。 Hibernate 中有一個簡單直觀的 API,可以對數據庫表示的對象執行查詢,以更改我們通常在程序中與它們正常交互的那些對象,然后告訴 Hibernate 保存更改。 創建新對象也同樣簡單。 我們只是以常規方式創建它們,并使用注解將它們告知 Hibernate,以便它們可以存儲到數據庫中。 ## Hiberate 與 JPA 的關系 [JPA(Java 持久化 API)](https://en.wikipedia.org/wiki/Java_Persistence_API "java persistence API")是持久化供應器要實現的規范。 Hibernate 就是這樣的 JPA 規范的實現。 我們可以使用 JPA 注解對注解進行盡可能多的注解,但是如果沒有實現,將不會發生任何事情。 > 可以將 JPA 視為必須遵循的準則/規范或接口,而 Hibernate JPA 實現是符合 JPA 定義的 API 并提供底層功能的代碼。 *當我們將 Hibernate 與 JPA 一起使用時,實際上是在使用 Hibernate JPA 實現。* 這樣做的好處是我們可以將 JPA 的 Hiberate 實現換成 JPA 規范的另一種實現。 當我們使用直接 Hiberate 時,由于其他 ORM 可能使用不同的方法/配置和注解,因此您將鎖定到實現中,因此我們不能僅切換到另一個 ORM。 ## Java Hibernate HelloWorld 示例 讓我們逐步創建一個 Hiberate 的 HelloWorld 示例。 在此示例中,我創建了一個`Employee`類并聲明了四個屬性`id`,`email`,`firstname`和`lastname`。 我希望`id`屬性應自動生成,以便應用代碼不存儲員工 ID 的本地緩存。 到目前為止,我們的目標是要在第一個應用中進行制作。 讓我們確定需要創建的文件。 1. **`hibernate.cfg.xml`** - 此配置文件將用于存儲數據庫連接信息和架構級別設置。 2. **`EmployeeEntity.java`** - 此類將引用具有 Hiberate 注解的 Java POJO。 3. **`HibernateUtil.java`** – 此類將具有工具方法,這些方法將用于創建會話工廠和會話對象。 4. **`TestHibernate.java`** - 此類將用于測試我們的配置設置和`Emplyee`實體注解。 在進入代碼之前,讓我們看一下項目的設置并添加 [**maven**](https://maven.apache.org/ "maven") 依賴項,這些依賴項需要添加到`pom.xml`以包括所有編譯時間和運行時依賴項。 #### 1\. 創建一個 Maven 項目 ![mvn-create-java-project](https://img.kancloud.cn/ee/db/eedb3a85dfbbeb99480e1480e2b31234_675x148.png "mvn-create-java-project") #### 2\. 使項目支持 Eclipse ![Adding-eclipse-support in maven project](https://img.kancloud.cn/08/4e/084e93c97313d671929d29c9717ab702_672x147.png "Adding-eclipse-support") #### 3\. 將 Java 項目導入到 Eclipse 工作區 ![Import java project in eclipse](https://img.kancloud.cn/f5/a1/f5a10f0e156dbb3edf8a7c0b380daae4_514x610.png "Import in eclipse") 以上步驟將創建最小設置。 現在該添加 Hiberate 依賴項了。 #### 4\. Hiberate Maven 依賴項 ```java <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-commons-annotations</artifactid> <version>3.0.0.ga</version> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-annotations</artifactid> <version>3.3.0.ga</version> </dependency> <dependency> <groupid>mysql</groupid> <artifactid>mysql-connector-java</artifactid> <version>5.1.6</version> </dependency> <dependency> <groupid>antlr</groupid> <artifactid>antlr</artifactid> <version>2.7.6</version> </dependency> <dependency> <groupid>commons-collections</groupid> <artifactid>commons-collections</artifactid> <version>3.1</version> </dependency> <dependency> <groupid>dom4j</groupid> <artifactid>dom4j</artifactid> <version>1.6.1</version> </dependency> <dependency> <groupid>javassist</groupid> <artifactid>javassist</artifactid> <version>3.4.GA</version> </dependency> <dependency> <groupid>javax.transaction</groupid> <artifactid>jta</artifactid> <version>1.1</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-api</artifactid> <version>1.5.6</version> </dependency> <dependency> <groupid>org.slf4j</groupid> <artifactid>slf4j-log4j12</artifactid> <version>1.5.6</version> </dependency> ``` 請注意,在此 Hiberate 示例中,我們并沒有使用所有的 Maven 依賴項,但是當我們開始擴展應用時將使用它們。 #### 5\. Hiberate 配置 ```java <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernatetest</property> <property name="hibernate.connection.password">lg225295</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping class="hibernate.test.dto.EmployeeEntity"></mapping> </session-factory> </hibernate-configuration> ``` 運行此 Hiberate 示例之前,請不要忘記設置正確的密碼。 #### 6\. Hiberate 實體類 ```java package hibernate.test.dto; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import org.hibernate.annotations.OptimisticLockType; @Entity @org.hibernate.annotations.Entity(optimisticLock = OptimisticLockType.ALL) @Table(name = "Employee", uniqueConstraints = { @UniqueConstraint(columnNames = "ID"), @UniqueConstraint(columnNames = "EMAIL") }) public class EmployeeEntity implements Serializable { private static final long serialVersionUID = -1798070786993154676L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID", unique = true, nullable = false) private Integer employeeId; @Column(name = "EMAIL", unique = true, nullable = false, length = 100) private String email; @Column(name = "FIRST_NAME", unique = false, nullable = false, length = 100) private String firstName; @Column(name = "LAST_NAME", unique = false, nullable = false, length = 100) private String lastName; // Accessors and mutators for all four fields } ``` #### 7\. Hiberate 會話工廠 ```java package hibernate.test; import java.io.File; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new AnnotationConfiguration().configure( new File("hibernate.cgf.xml")).buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } } ``` 請不要忘記使用`hibernate.cgf.xml`的正確路徑。 #### 8\. 演示 ```java package hibernate.test; import hibernate.test.dto.EmployeeEntity; import org.hibernate.Session; public class TestHibernate { public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); // Add new Employee object EmployeeEntity emp = new EmployeeEntity(); emp.setEmail("demo-user@mail.com"); emp.setFirstName("demo"); emp.setLastName("user"); session.save(emp); session.getTransaction().commit(); HibernateUtil.shutdown(); } } ``` 上面的代碼將在數據庫中創建一個新的表`Employee`,并在此表中插入一行。 在日志中,您可以驗證已執行的插入語句。 ```java Hibernate: insert into Employee (EMAIL, FIRST_NAME, LAST_NAME) values (?, ?, ?) ``` 如果您在運行 Hiberate 的 HelloWorld 示例時遇到問題,請給我評論,我將很高興與您討論問題。 學習愉快! [下載源碼](https://drive.google.com/file/d/0B7yo2HclmjI4bnlHNzROYVJMdXM/view?usp=drive_web "下載源碼") 參考文獻: [Hiberate 首頁](http://hibernate.org/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看