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

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

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

    yxhxj2006

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    Hibernate實(shí)現(xiàn)CRUD操作

        
        最近學(xué)習(xí)hibernate有幾天了,基本學(xué)會(huì)簡(jiǎn)單的增刪改查,現(xiàn)在就把實(shí)現(xiàn)分享如下:

        一: 首先需要建立數(shù)據(jù)庫(kù),而我采用的mysql數(shù)據(jù)庫(kù),為了更詳細(xì)hibernate的映射,我把數(shù)據(jù)庫(kù)表名和字段名與實(shí)體類(lèi)的類(lèi)名與屬性名取得不一致。
               create table t_teacher(
                    id 
    int auto_increment,
                    t_username varchar(
    50),
                    t_age 
    int,
                    primary key(id)
              );


        二:建立數(shù)據(jù)源連接:hibernate.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-configuration>

         
    <session-factory>

             
    <!-- Database connection settings -->

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

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

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

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

     

            
    <!-- JDBC connection pool (use the built-in) -->

           
    <!-- <property name="connection.pool_size">1</property> --> 

     

            
    <!-- SQL dialect -->

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

     

            
    <!-- Enable Hibernate's automatic session context management -->

            
    <property name="current_session_context_class">thread</property>

     

            
    <!-- Disable the second-level cache -->

            
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

     

            
    <!-- Echo all executed SQL to stdout -->

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

     

            
    <!-- Drop and re-create the database schema on startup -->

            
    <property name="hbm2ddl.auto">update</property>

     

            
    <mapping class="com.wsw.hibernate.model.Teacher" /> 

           

          
    <!-- <mapping resource="com/wsw/hibernate/model/Person.hbm.xml"/>-->

     

        
    </session-factory>

     

    </hibernate-configuration>



     三:建立實(shí)體類(lèi):Teacher,由于我采用注解方式進(jìn)行配置,所以需要再實(shí)體類(lèi)上面加上注解。
           
     

    package com.wsw.hibernate.model;

     

    import java.io.Serializable;

    import javax.persistence.Column;

    import javax.persistence.Entity;

    import javax.persistence.GeneratedValue;

    import javax.persistence.Id;

    import javax.persistence.Table;

    import org.hibernate.annotations.GenericGenerator;

     

    @Entity

    @Table(name
    ="t_teacher")

    public class Teacher implements Serializable {

     

        
    private int id;

        

        
    private String username;

        

        
    private int age;

        

        @Id 

        @GenericGenerator(name 
    = "generator", strategy = "increment")

        @GeneratedValue(generator 
    = "generator")

        @Column(name 
    = "id"

        
    public int getId() {

           
    return id;

        }


     

        
    public void setId(int id) {

           
    this.id = id;

        }


        

        @Column(name
    ="t_username")

        
    public String getUsername() {

           
    return username;

        }


        

        
    public void setUsername(String username) {

           
    this.username = username;

        }


        

        @Column(name
    ="t_age")

        
    public int getAge() {

           
    return age;

        }


        
    public void setAge(int age) {

           
    this.age = age;

        }


    }



       

    四:創(chuàng)建獲取SessionFactory的單例類(lèi):


    package com.wsw.hibernate.util;

    import org.hibernate.SessionFactory;

    import org.hibernate.cfg.AnnotationConfiguration;

    import org.hibernate.cfg.Configuration;

    public class HibernateUtil {

        
    private static final SessionFactory sessionFactory;

        
    static {

            
    try {

                
    // Create the SessionFactory from hibernate.cfg.xml

                
    //sessionFactory = new Configuration().configure().buildSessionFactory();

                sessionFactory 
    = new AnnotationConfiguration().configure()

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

        }


    }

        
        五:實(shí)現(xiàn)hibernate的CURD操作:
        

    package com.wsw.hibernate.action;

     

    import java.util.List;

     

    import org.hibernate.Query;

    import org.hibernate.Session;

    import org.hibernate.Transaction;

     

    import com.wsw.hibernate.model.Person;

    import com.wsw.hibernate.model.Teacher;

    import com.wsw.hibernate.util.HibernateUtil;

     

    public class TeacherManager {

        
    public static void main(String[] args) {

            
    //selectTeacher_By_Load(1);

            insertTeacher();

            
    //deleteTeacher();

            selectAll();


            
    //updateTeacher();

            
    //insertTeacher();

            
    //createAndStoreTeacher();

            
    //select_All_By_Get(2);

            
    //select_AllPerson_By_Get();

            
    //annotation();

            
    //HibernateUtil.getSessionFactory().close();

        }


        
    /**

         * 插入記錄

         
    */


        
    private static void insertTeacher() {

      

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction();    

            Teacher teacher 
    = new Teacher();

            teacher.setUsername(
    "aaa");

            teacher.setAge(
    25);

            session.save(teacher);

            session.getTransaction().commit();

            System.out.println(
    "insert teacher successfully");

            

        }


        

        
    /**

         * 刪除記錄操作

         
    */


        
    private static void deleteTeacher() {

            
    int count;

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction();

            Query query 
    = session.createQuery("delete Teacher where id=?");     

            query.setParameter(
    01);

            count 
    = query.executeUpdate();                          // 刪除記錄采用Update方式

            session.getTransaction().commit();

            System.out.println(
    "刪除" + count + "條teacher記錄");

        }


        

        
    /**

         * 根據(jù)id采用load方式查詢(xún)

         * 
    @param id

         
    */


        
    private static void selectTeacher_By_Load(int id) {

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

            
    // load獲取值不能采用這種方式獲取session對(duì)象,因?yàn)閘oad采用延遲加載/懶加載。而getCurrentSession()獲取session時(shí)會(huì)自動(dòng)關(guān)閉session對(duì)象,

            
    // 所以會(huì)導(dǎo)致對(duì)象沒(méi)有保存到內(nèi)存中,然后你使用該對(duì)象了,導(dǎo)致該:org.hibernate.LazyInitializationException異常。

            
    //Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 

            session.beginTransaction(); 

            Teacher teacher 
    = (Teacher)session.load(Teacher.class, id);   // 只能是主鍵id獲取對(duì)象值,不能以其他的表字段名獲取對(duì)象值,否則,只能用HQL語(yǔ)句查詢(xún)。

            System.out.println(
    "load方式commit之前====>Id:" + teacher.getId() + " UserName:" + teacher.getUsername() + " Age:" + teacher.getAge());

            session.getTransaction().commit();

            System.out.println(
    "load方式commit之后====》Id:" + teacher.getId() + " UserName:" + teacher.getUsername() + " Age:" + teacher.getAge());

            session.close(); 
    // load獲取值session方式需要手動(dòng)關(guān)閉session對(duì)象,而通過(guò)getCurrentSession()則會(huì)自動(dòng)關(guān)閉session對(duì)象

        }


        

        
    /**

         * 根據(jù)id采用get方式查詢(xún)

         * 
    @param id

         
    */


        
    private static void selectTeacher_By_Get(int id) {

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction(); 

            Teacher teacher 
    = (Teacher)session.get(Teacher.class, id);

            System.out.println(
    "get方式commit之前====>Id:" + teacher.getId() + " UserName:" + teacher.getUsername() + " Age:" + teacher.getAge());

            session.getTransaction().commit();

            System.out.println(
    "get方式commit之后====>Id:" + teacher.getId() + " UserName:" + teacher.getUsername() + " Age:" + teacher.getAge());

        }


        

        
    /**

         * 按條件查詢(xún)記錄

         
    */


        
    private static void selectAll_By_Request() {

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction();

            Query query 
    = session.createQuery("from Teacher where id=? and age=:tage"); //在條件語(yǔ)句中,可以用?和:兩種方式。兩者方式各有不同。

            query.setParameter(
    02);                // 從0開(kāi)始,而不是從1開(kāi)始。采用?方式。

            
    //query.setInteger(0, 2);                // 上面的query.setParameter(0, 2)也可以用query.setInteger(0, 2)代替,效果一樣 

            query.setParameter(
    "tage"27);          // 采用:方式。前面參數(shù)名與之前的:后面的參數(shù)名必須一致。

            
    //query.setInteger("tage", 27);          // 上面的query.setParameter("tage", 27)也可以用query.setInteger("tage", 27)代替,效果一樣 

            List
    <Teacher> listteacher = (List<Teacher>)query.list();

            printList(listteacher);

        }


        

        
    /**

         * 查詢(xún)?nèi)坑涗?br />
         
    */


        
    private static void selectAll() {

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction();

            Query query 
    = session.createQuery("from Teacher");       

            List
    <Teacher> listteacher = (List<Teacher>)query.list();

            printList(listteacher);

        }


        

        
    /**

         * 更新操作

         
    */


        
    private static void updateTeacher() {

            
    int count;

            Session session 
    = HibernateUtil.getSessionFactory().getCurrentSession();

            session.beginTransaction();

            Query query
    = session.createQuery("update Teacher set t_username='何小景' where id=?");

            query.setInteger(
    02);

            count 
    = query.executeUpdate();

            session.getTransaction().commit();

            System.out.println(
    "更新" + count +"條記錄");

        }


        
    /**

         * 打印List<Person>對(duì)象集合

         * 
    @param listteacher

         
    */


        
    private static void printList(List<Teacher> listteacher){

            
    for(Teacher teacher : listteacher) {

                System.out.println(
    "Id:" + teacher.getId() + " UserName:" + teacher.getUsername() + " Age:" + teacher.getAge());

            }


        }


    }


         

    posted on 2012-06-30 10:29 奮斗成就男人 閱讀(2946) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产在线观看免费不卡| 久久国产亚洲精品无码| 四虎必出精品亚洲高清| a级毛片毛片免费观看久潮| 日本视频免费在线| 4444亚洲国产成人精品| 成人网站免费大全日韩国产| 四虎成人免费网址在线| 久久亚洲精品人成综合网| 一级特黄特色的免费大片视频| 亚洲va在线va天堂va手机| 成人一区二区免费视频| 凹凸精品视频分类国产品免费 | 丁香花免费高清视频完整版| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久免费美女视频| 免费v片在线观看| 中文字幕乱码亚洲无线三区| 8x成人永久免费视频| 精品国产人成亚洲区| 在线播放亚洲精品| 成全高清视频免费观看| 亚洲国产一区在线观看| 四虎影视成人永久免费观看视频| 免费无码又爽又刺激聊天APP| 免费观看亚洲人成网站| 亚洲sss综合天堂久久久| 99精品视频在线观看免费播放 | 亚洲美女免费视频| 亚洲精品成人无码中文毛片不卡| 亚洲冬月枫中文字幕在线看| 三年片在线观看免费观看大全一 | 免费视频精品一区二区三区 | 99re这里有免费视频精品 | 国产精品亚洲片在线观看不卡 | 亚洲一线产区二线产区精华| 黄色一级视频免费观看| 四虎成人免费网站在线| 亚洲精品免费在线| 亚洲一区免费观看| 亚洲香蕉免费有线视频|