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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 畫圖 我們根據ER圖,加入SET/GET方法,并實現IdEntity接口后。得到一個如下的實體類圖: ![https://box.kancloud.cn/41a1b532ced14defa5f2caa853e86ab0_668x822.png](https://box.kancloud.cn/41a1b532ced14defa5f2caa853e86ab0_668x822.png) 根據上圖,我們使用Astah中的代碼自動生成工具,自動生成如下代碼: 當然了,如果我們沒有Astah工具,根據上面的類圖,也能非常輕松的得到以下代碼。 ``` package com.mengyunzhi.javaee.entity; import java.io.Serializable; public class Klass implements IdEntity { /** * 班級 * */ private static final long serialVersionUID = 1L; private Long klassId; private String name; private Long teacherId; @Override public void setId(Serializable id) { } @Override public Serializable getId() { return null; } public Long getKlassId() { return null; } public void setKlassId(Long id) { } public String getName() { return null; } public void setName(String name) { } public Long getTeacherId() { return 0; } public void setTeacherId(Long teacherId) { } @Override public String toString() { return null; } public Klass() { } public Klass(String name, long teacherId) { } } ``` 得到代碼后,我們結合eclipse的自動查錯功能,對代碼進行補充。 我們也可以在類圖中,去除get/set方法。 ![https://box.kancloud.cn/a2450f0eb72be8264971b09f85e00888_540x552.png](https://box.kancloud.cn/a2450f0eb72be8264971b09f85e00888_540x552.png) 然后將得到以下代碼: ``` package com.mengyunzhi.javaee.entity; import java.io.Serializable; public class Klass implements IdEntity { private static final long serialVersionUID = 1L; private Long klassId; private String name; private Long teacherId; @Override public String toString() { return null; } public Klass() { } public Klass(String name, long teacherId) { } /** * @see com.mengyunzhi.javaee.entity.IdEntity#getId() */ public Serializable getId() { return null; } /** * @see com.mengyunzhi.javaee.entity.IdEntity#setId(java.io.Serializable) */ public void setId(Serializable id) { } } ``` 然后再利用eclipse中的代碼自動生成功能,生成get/set方法: ``` package com.mengyunzhi.javaee.entity; import java.io.Serializable; public class Klass implements IdEntity { private static final long serialVersionUID = 1L; private Long klassId; private String name; private Long teacherId; public Long getKlassId() { return klassId; } public void setKlassId(Long klassId) { this.klassId = klassId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getTeacherId() { return teacherId; } public void setTeacherId(Long teacherId) { this.teacherId = teacherId; } public static long getSerialversionuid() { return serialVersionUID; } @Override public String toString() { return null; } public Klass() { } public Klass(String name, long teacherId) { } /** * @see com.mengyunzhi.javaee.entity.IdEntity#getId() */ public Serializable getId() { return null; } /** * @see com.mengyunzhi.javaee.entity.IdEntity#setId(java.io.Serializable) */ public void setId(Serializable id) { } } ``` 最后,我們再結合使用eclipse進行代碼補充。 無論是哪種方法,最終,我們需要補充部分代碼,加入部分引入的類,并使用注解方式來加入注解。最終期待的代碼如下: ``` package com.mengyunzhi.javaee.entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="Klass") public class Klass implements IdEntity { /** * 班級 * */ private static final long serialVersionUID = 1L; @Id @GenericGenerator(name="idGenerator",strategy="native") @GeneratedValue(generator="idGenerator") private Long klassId; private String name; private Long teacherId; public Long getKlassId() { return klassId; } public void setKlassId(Long klassId) { this.klassId = klassId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getTeacherId() { return teacherId; } public void setTeacherId(Long teacherId) { this.teacherId = teacherId; } public static long getSerialversionuid() { return serialVersionUID; } public Klass() { } @Override public String toString() { return "Klass [klassId=" + klassId + ", name=" + name + ", teacherId=" + teacherId + "]"; } public Klass(String name, long teacherId) { this.name = name; this.teacherId = teacherId; } /** * @see com.mengyunzhi.javaee.entity.IdEntity#getId() */ public Serializable getId() { return this.getKlassId(); } /** * @see com.mengyunzhi.javaee.entity.IdEntity#setId(java.io.Serializable) */ public void setId(Serializable id) { this.setKlassId((Long) id); } } ``` # 測試 在進行實體測試前,我們需要修改hibernate的配置文件,將此實體添加至其maping中,來告訴hibernate,該類是個實體類,與數據表是一一對應的關系。 hibernate.cfg.xml ``` ... <!-- 是否在控制臺打印sql語句 --> <property name="show_sql">true</property> <!-- 加載entity.Teacher實體類映射文件 --> <mapping class="com.mengyunzhi.javaee.entity.Teacher" /> <mapping class="com.mengyunzhi.javaee.entity.Klass" /> </session-factory> ... ``` > 保存文件后,系統將自動重新加載該配置文件以使其生效。如果你保存該文件后,發現控制臺沒有任何的變化。那么你需要手動的重新啟動tomcat服務。 單元測試: 我們可以像5.2.2小節一樣,新建factory,然后獲取session。在這,由于我們在AbstractDao中已經統一處理過session了。所以,我們直接將AbstractDao中的getCurrentSession屬性改為public后,調用測試. ``` package com.mengyunzhi.javaee.dao; public abstract class AbstractDao implements Serializable, Dao { - protected static Session getCurrentSession() { + public static Session getCurrentSession() { // 每個數據庫只需要一個sessionFactory,在這里進行單一實例處理。 ``` 然后,我們在測試文件中對其進行調用,并嘗試完成數據添加操作. ``` package com.mengyunzhi.javaee.entityTest; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import com.mengyunzhi.javaee.dao.AbstractDao; import com.mengyunzhi.javaee.entity.Klass; public class KlassTest { @Test public void create() { // 獲取Session Session session = AbstractDao.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) Transaction transaction = session.beginTransaction(); try { // 實例化實體 Klass klass = new Klass("一一班", 1); session.save(klass); // 提交事務 transaction.commit(); // 捕獲異常 } catch (HibernateException e) { // 如果事務執行異常,則回滾事務 if (null != transaction) { transaction.rollback(); } // 打印異常 e.printStackTrace(); } finally { // 如果session處于開啟狀態,則關閉session if (session.isOpen()) { // 關閉會話 session.close(); } } } } ``` 測試: ``` Hibernate: insert into Klass (name, teacherId) values (?, ?) ``` 我們再多執行幾次,發現每執行一次,數據表中,就會多出一條記錄。 ![https://box.kancloud.cn/75496cf6ae73ce4b90990cdb9557a72d_674x318.png](https://box.kancloud.cn/75496cf6ae73ce4b90990cdb9557a72d_674x318.png)
                  <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>

                              哎呀哎呀视频在线观看