<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    mike zeseler

    張紹林

     

    Hibernate入門

    自己學軟件編程不久,在學習中總結和記錄啦一些學習的入門知識!有不足之處,請批評指正。

       

    Hibernate入門指南

                                              Mike zeseler

    Hibernate5個核心接口:

    Session 

    SessionFactory

    Transaction

    Query 

    Configuration

    對象“持久化”狹義理解:是把域對象永久保存到數據庫中。

    持久化和數據庫相關的各項操作:

    保存:把域對象永久保存到數據庫中

    更新:更新數據庫中域對象發的狀態。

    刪除: 從數據庫中刪除一個域對象。

    加載:根據特定的oid(對象標示符)把一個域對象從數據庫加載到內存中。

    查詢:根據特定的查詢條件,把符合查詢條件的一個或多個域對象從數據庫加載到內存中。

    一:新建項目web java項目都可以

    New——》project——》webproject——》T_user

    截圖如:
     

    為項目添加hibernateCapabilitise截圖如


    點擊next-à如圖:

     

    點擊--ànext如圖:這一步需要詳細的配置:

     

    一:一般我們需要選擇mysql數據庫截圖:


     

    這里的配置需要給大家詳細的說下:具體情況操作完后慢慢詳細講解:myeclipse Database Explorer的使用:

     

    Java 前面有個窗口帶+號的標示,點擊下就可以出現一個下拉菜單;看看有沒有Database Explorer這項,沒有的話點擊other進行下一步:

    出現一個選框:我們選擇Database Explore這項:


     

    點擊ok 完成。

    Database Explore的界面截圖:


     

    我們來連接一個數據庫。Myeclipse Derby myeclipse自帶的一個數據庫,它比mysql支持更好的事物(trasaction)。

     

    右擊鼠標 new一個 newDatabase Connection Driver


     

    這里需要天相關的配置:

    Driver template 選擇你裝好的數據庫名稱:我以mysql為例:

    Driver name mysql55 隨你的意思取就ok

    Connection urljdbc:mysql://<hostname>[<:3306>]/<dbname>

    我用的是mysql5則是:jdbcmysql//localhost3306/test.

    (連接數據庫用戶名)usernameroot

    Password   我的密碼為空();

    Driver jars 驅動類,不同的數據庫有不同的jar包,我用的是mysqljar包。

    點擊Save passwordConnection to database on我們不需要理會,配置好的的截圖:


     

    點擊next—》點擊finish ok完成,以上就是Database ExploreEasy吧。^_^

    點擊next—》下一步截圖:

     

    去掉create SessionFactory class 點擊finish完成。

    完成后的截圖

     

    一般的hibernate.cfg.xml配置文件:

    <?xml version="1.0" encoding="gbk"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  

    <hibernate-configuration>    

    <session-factory>

    <!—顯示實際操作數據庫時的sql(這里是mysql數據庫) --> 

    <property name="show_sql">true</property>    

    <!—將顯示的sql排版,方便觀看--> 

    <property name="format_sql">true</property>  

    <!—sql方言,這里設定的是mysql -->

    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  

    <!—JDBC驅動類--> 

    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

    <!-- JDBC URL -->  

    <property name="connection.url">jdbc:mysql://localhost/demo</property>   

    <!—連接數據庫用戶名 -->    

    <property name="connection.username">root</property> 

    <!—數據庫密碼(我的數據庫密碼為空) --> 

    <property name="connection.password"></property> 

    <!—下面的是數據庫要映射的文件-->    

    </session-factory>

    </hibernate-configuration>

     

    建表:建表語句

    Create table T_user(

    id bigint not null auto_increment,

    name varchar(255),

    age bigint,

    primary key(id)

    )engine=myisam default charset=gbk//支持中文防止插入數據出現亂碼

     

    Hibernate.cfg.xml實例

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

    <!-- Generated by MyEclipse Hibernate Tools.                   -->

    <hibernate-configuration>

        <session-factory>

             <!-- 連接數據可的用戶名 -->

           <property name="connection.username">root</property>

            <!-- jdbc url -->

           <property name="connection.url">

               jdbc:mysql://localhost:3306/test

           </property>

            <!-- 數據庫方言sql方言)-->

           <property name="dialect">

               org.hibernate.dialect.MySQLDialect

           </property>

            <!-- 連接數據庫的名字-->

           <property name="myeclipse.connection.profile">mysql5</property>

            <!-- 接數據驅動類-->

           <property name="connection.driver_class">

               com.mysql.jdbc.Driver

           </property>

            <!-- 數據庫映射文件-->

           <mapping resource="dao/TUser.hbm.xml" />

        </session-factory>

    </hibernate-configuration>

     

    首先咋們建立一張表:如上的建表語句:打開database explorer連接數據庫,右擊Connected to mysql5,選擇New SQL Editor,寫上建表語句

    截圖如下;


     

    點擊綠色的三角符號,建表ok啦!

    Ok進行下一步:在建好的表上右擊:選擇Hibernate Reverse Engineering,這里需注意我進行這步之前首先一定要關掉如上圖sql Editor.

    Java src folder: 點擊Browser

     

    選擇T_user下的目錄src:點擊ok

     

    進行下一項:java pakage 我們需填上個dao,名稱無所謂,但是我們要讓別人理解,更容易清楚我們的編程設計思想,編程不是讓別人看不懂,自己很牛,但是我們的編碼的最終思想是越來越簡單,不是所謂的越搞越復雜,讓別人更了解我們的程序。

    具體的截圖如下:

    點擊下一步

    這步其實沒有什么可以填的,我們直接下一步:

     

    需要注意的是

    1:include referenced table(A->B)

    2:include referenced table(A<-B)

    我們需要勾選他們:

     

    好一切ok^_^。咋們點擊finish完成。

    生成的目錄

     

    所限我們需要改的是:Tuser.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <!--

        Mapping file autogenerated by MyEclipse Persistence Tools

    -->

    <hibernate-mapping>

        <class name="dao.TUser" table="t_user" catalog="test">

            <id name="id" type="java.lang.Long">

                <column name="id" />

                <generator class="identity" />

            </id>

            <property name="name" type="java.lang.String">

                <column name="name" />

            </property>

            <property name="age" type="java.lang.Long">

                <column name="age" />

            </property>

        </class>

    </hibernate-mapping>

    <generator class="identity" />在各項需要改成前面的或是identity

    BaseHibernateDAO

    package dao;

    import org.hibernate.Session;

    /**

     *Dataaccessobject(DAO)fordomainmodel

     *@authorMyEclipsePersistenceTools

     */

    publicclass BaseHibernateDAO implements IBaseHibernateDAO {

       

        public Session getSession() {

           return HibernateSessionFactory.getSession();

        }

       

    }

     

    IBaseHibernateDAO

    package dao;

    import org.hibernate.Session;

    /**

     *Dataaccessinterfacefordomainmodel

     *@authorMyEclipsePersistenceTools

     */

    publicinterface IBaseHibernateDAO {

        public Session getSession();

    }

    HibernateSessionFactory

    package dao;

    TUser

    package dao;

    /**

     *TUsergeneratedbyMyEclipsePersistenceTools

     */

    publicclass TUser implements java.io.Serializable {

        // Fields

        private Long id;

        private String name;

        private Long age;

        // Constructors

        /**defaultconstructor*/

        public TUser() {

        }

        /**minimalconstructor*/

        public TUser(Long id) {

            this.id = id;

        }

        /**fullconstructor*/

        public TUser(Long id, String name, Long age) {

           this.id = id;

           this.name = name;

           this.age = age;

        }

        // Property accessors

        public Long getId() {

           returnthis.id;

        }

        publicvoid setId(Long id) {

           this.id = id;

        }

        public String getName() {

           returnthis.name;

        }

        publicvoid setName(String name) {

           this.name = name;

        }

        public Long getAge() {

           returnthis.age;

        }

        publicvoid setAge(Long age) {

           this.age = age;

        }

    }

    TUserDAO

    package dao;

    測試代碼:HibernateDemo

     

    package onlyfun.caterpillar;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

    import dao.HibernateSessionFactory;

    import dao.TUser;

    publicclass HibernateDemo { 

        publicstaticvoid main(String[] args) {

           TUser tuser = new TUser();      

           tuser.setName("hibernate測試");   

           tuser.setAge(new Long(23));     

           // 開啟Session,相當於開啟JDBCConnection

           Session session = HibernateSessionFactory.getSessionFactory().openSession();      

           // Transaction表示一組會話操作

           Transaction tx= session.beginTransaction();    

           // 將物件映射至資料庫表格中儲存

           session.save(tuser);     

           tx.commit();      

           session.close();          

           System.out.println("新增資料OK!請先用MySQL觀看結果!");  

           HibernateSessionFactory.shutdown();   

           }

        }

    測試結果:


     

    測試ok,呵呵。

    還有個實例大家練習下我這里只給出建表語句:或測試代碼,其他的與上面的方法一樣:

    建表語句:

    Create table Student(

    Id int not null auto_increment,

    Uername varchar(200) not null,

    Password vachar(20) not null,

    Age int,

    Primary key (id)

    )engine = myisam default charset=gbk

    測試代碼:

    package HibernateTransaction;

    import java.util.List;

    import dao.Student;

    import dao.StudentDAO;

    publicclass HibernateDAOTest {

         privatestatic Object results;

        publicstaticvoid main(String [] args){

         //實例化dao

         StudentDAO dao = new StudentDAO();

         //打開事務

         org.hibernate.Transaction tran = dao.getSession().beginTransaction();

         //生成普通java

         Student bean = new Student();

         //設置屬性

         bean.setUername("struts測試");

         bean.setPassword("1234");

         bean.setAge(100);

         //插入數據

         dao.save(bean);

         //提交事務

            tran.commit();

         

            List<Student> results= dao.findAll();

           for(Student o : results) {

               System.out.println("編號:"+o.getId());

               System.out.println("姓名:"+o.getId());

           }

           dao.getSession().close();

         }

    }

    posted on 2009-01-15 19:49 mike zeseler 閱讀(4625) 評論(3)  編輯  收藏

    評論

    # re: Hibernate入門 2009-01-16 10:17 crane.wang

    怎么不全?  回復  更多評論   

    # re: Hibernate入門 2009-02-13 19:42 mike zeseler

    更新完成,呵呵。。由于過兩天要回學校啦。所以抽個時間來來完成。這里給大家道個歉!對不起!大家情人節快樂!  回復  更多評論   

    # re: Hibernate入門 2009-10-31 21:07 南陽百事通

    我的站<a href="www.nybst.net" title="南陽百事通"> 希望能得到您的指點!  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章檔案

    .net

    “美少女股神”王雅媛

    blogjava

    books

    dzineblog

    europe open source

    flash

    google

    j2EE

    open erp

    open source

    Open Source Web Design

    seo

    seo 國外

    sex

    sns

    Tiobe

    w3c

    web

    Web 前端開發

    web 設計blog

    web2.0

    web-design resource

    兄弟軟件

    免費電子書

    博客園

    友情鏈接

    建站

    開源項目

    房產博客

    源碼

    計算機書籍下載站

    音樂論壇

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码欧精品亚洲日韩一区夜夜嗨 | 国产亚洲AV手机在线观看| 亚洲精品成a人在线观看☆| 免费av欧美国产在钱| 国产亚洲sss在线播放| 成人女人A级毛片免费软件| 亚洲av一本岛在线播放| 成人黄动漫画免费网站视频 | 亚洲视频在线观看视频| 最近2019年免费中文字幕高清| 久久久久亚洲av无码专区导航| 日本高清不卡aⅴ免费网站| 亚洲av无码精品网站| 最近2019中文字幕免费大全5| 亚洲国产成人无码av在线播放| 99精品全国免费观看视频| 国产成人亚洲精品电影| 亚洲乱码日产精品a级毛片久久| h视频免费高清在线观看| 亚洲AV无码一区东京热久久| 中国xxxxx高清免费看视频| 亚洲 欧洲 自拍 另类 校园| 四虎永久成人免费| 最近中文字幕大全免费版在线 | 高清免费久久午夜精品| 亚洲成色WWW久久网站| 很黄很黄的网站免费的| 国产精品亚洲AV三区| 亚洲一区无码中文字幕| 99re6免费视频| 亚洲AV永久无码天堂影院| 亚洲色偷偷狠狠综合网| 99热这里只有精品6免费| 亚洲日本天堂在线| 亚洲线精品一区二区三区| 999国内精品永久免费观看| 国产成人亚洲午夜电影| 亚洲国产精品第一区二区| 成人毛片免费观看| 99久久99这里只有免费的精品| 亚洲免费中文字幕|