<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                有了實體類,也有了hibernate ,還成功的鏈接了數據庫。本節中,我們共同使用hibernate將實體類的信息更新至數據表。 # 開啟自動創建數據表 hibernate.cfg.xml ``` <!-- 啟用hibernate自動session上下文管理(現在不需要理解)--> <property name="current_session_context_class">thread</property> <!-- hibernate mapping to db define language auto create --> <!-- validate:只驗證;create:每次都自動創建新表, update:自動更新表結構.create-drop:隨sessionFactory的關閉刪除 --> <property name="hbm2ddl.auto">create</property> <!-- 是否在控制臺打印sql語句 --> <property name="show_sql">true</property> </session-factory> ``` > 當我們只給出部分代碼時,表示其它未給出代碼的部分保持不變。 # 增加映射 加載實體類文件。 src/hibernate.cfg.xml ``` <!-- 是否在控制臺打印sql語句 --> <property name="show_sql">true</property> <!-- 加載entity.Teacher實體類映射文件 --> <mapping class="entity.Teacher" /> </session-factory> ``` # 增加注解 在沒有接觸到java annotation(注解)以前,我們不曾想到,這個類似于注釋的東西,竟然能夠起如此大的作用。比如前面我們使用單元測試時,就增加過一個@Test注解,來告訴java,那個方法是一個單元測試的方法。 下面我們用注解的方式,來告訴hibrenate,我們當前類要對應數據庫中一個數據表 ``` package entity; import javax.persistence.Entity; // 聲明主體 @Entity public class Teacher { ``` > 和其它采用命名空間的語言一樣,我們可以根據命名空間和類名,來快速的定位到文件的位置。 # 測試: 和驗證數據庫配置信息一樣,只有在開啟事務時,才會進行數據表的更新。我們繼續使用第6節中的測試方法進行測試 > 所有的測試的文件,都位于test文件夾中。 ``` package hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.Test; import java.util.List; import java.util.Properties; public class TestCfgXml { @Test public void TestConfig() { try { // 實例化 ``` 測試信息: ``` 發生錯誤: org.hibernate.AnnotationException: No identifier specified for entity: entity.Teacher ``` 上述報錯信息的原因,是由于我們并沒有為Teacher這個實體類增加主鍵,而Hibernate中規定:每個數據表最少存在一個主鍵。 # 增加主鍵 ``` package entity; import javax.persistence.Entity; import javax.persistence.Id; // 聲明主體 @Entity public class Teacher { // 聲明主鍵 @Id private int id; // 主鍵 ``` # 測試 ``` package hibernate; import java.util.Properties; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.junit.Test; public class TableTest { @Test public void createTable() { // 實例化并加載數據庫配置文件 Configuration configuration = new Configuration().configure(); // 構造服務注冊對象 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder(). applySettings(configuration.getProperties()). buildServiceRegistry(); // 創建會話工廠(session factory)) SessionFactory sessionFactory = configuration .buildSessionFactory(serviceRegistry); // 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話) Session session = sessionFactory.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) session.beginTransaction(); // 關閉session session.close(); } } ``` 控制臺信息: ``` Hibernate: drop table if exists Teacher Hibernate: create table Teacher (id integer not null, email varchar(255), name varchar(255), password varchar(255), sex boolean, username varchar(255), primary key (id)) 一月 09, 2017 10:56:18 上午 org.hibernate.tool.hbm2ddl.SchemaExport execute INFO: HHH000230: Schema export complete ``` navicat查看數據庫,發現Teacher表已經為我們自動創建了。 ![](https://box.kancloud.cn/2d729c6df2b306812f1ea7cc1f53fadd_427x267.png) # update 在實際開發中,如果我們將hbm2ddl.auto,則每次都會刪除所有的表,然后再重新建立空表。當我們需要一些測試數據時,明顯的,這樣會破壞我們的測試計劃。所以,我們更愿意將hbm2ddl.auto的屬性設計為update. update能完成:1.有表則檢查表與實體是否對應,不對應則更新表結構。2.無表則創建一個新表。 最終hibrenate.cfg.xml的內容如下: ``` <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <!-- hibernate配置信息 --> <hibernate-configuration> <!-- session 工廠配置信息 --> <session-factory> <!-- 數據庫連接區動, 位于資源庫中的com.mysql.jdbc.Driver --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 數據庫連接信息jdbc:數據庫類型://地址/數據庫名 --> <property name="connection.url">jdbc:mysql://localhost/javaee</property> <!-- 用戶名 --> <property name="connection.username">root</property> <!-- 密碼 --> <property name="connection.password"></property> <!-- 編碼格式 --> <property name="connection.characterEncoding">utf-8</property> <!-- SQL 方言(不同的數據庫除實現了標準的SQL外,還有一些自己的特性) --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 啟用hibernate自動session上下文管理(現在不需要理解)--> <property name="current_session_context_class">thread</property> <!-- hibernate mapping to db define language auto create --> <!-- validate:只驗證;create:每次都自動創建新表, update:自動更新表結構.create-drop:隨sessionFactory的關閉刪除 --> <property name="hbm2ddl.auto">update</property> <!-- 是否在控制臺打印sql語句 --> <property name="show_sql">true</property> <!-- 加載entity.Teacher實體類映射文件 --> <mapping class="entity.Teacher" /> </session-factory> </hibernate-configuration> ```
                  <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>

                              哎呀哎呀视频在线观看