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

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

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

    yxhxj2006

    常用鏈接

    統計

    最新評論

    Hibernate實現CRUD操作

        
        最近學習hibernate有幾天了,基本學會簡單的增刪改查,現在就把實現分享如下:

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


        二:建立數據源連接: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>



     三:建立實體類:Teacher,由于我采用注解方式進行配置,所以需要再實體類上面加上注解。
           
     

    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;

        }


    }



       

    四:創建獲取SessionFactory的單例類:


    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;

        }


    }

        
        五:實現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記錄");

        }


        

        
    /**

         * 根據id采用load方式查詢

         * 
    @param id

         
    */


        
    private static void selectTeacher_By_Load(int id) {

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

            
    // load獲取值不能采用這種方式獲取session對象,因為load采用延遲加載/懶加載。而getCurrentSession()獲取session時會自動關閉session對象,

            
    // 所以會導致對象沒有保存到內存中,然后你使用該對象了,導致該:org.hibernate.LazyInitializationException異常。

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

            session.beginTransaction(); 

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

            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方式需要手動關閉session對象,而通過getCurrentSession()則會自動關閉session對象

        }


        

        
    /**

         * 根據id采用get方式查詢

         * 
    @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());

        }


        

        
    /**

         * 按條件查詢記錄

         
    */


        
    private static void selectAll_By_Request() {

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

            session.beginTransaction();

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

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

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

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

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

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

            printList(listteacher);

        }


        

        
    /**

         * 查詢全部記錄

         
    */


        
    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>對象集合

         * 
    @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) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人片在线观看 | 日本免费一区尤物| 亚洲A∨精品一区二区三区下载| 日韩精品亚洲专区在线观看| 你懂的网址免费国产| 亚洲免费在线视频观看| 亚洲国产日韩在线观频| 在线观看永久免费| 日韩在线观看免费| 亚洲黑人嫩小videos| 无码国产亚洲日韩国精品视频一区二区三区 | 亚洲女人18毛片水真多| www国产亚洲精品久久久日本| 国产精品免费看久久久| 蜜臀亚洲AV无码精品国产午夜.| 亚洲日产韩国一二三四区| 国产在线a免费观看| 国产免费内射又粗又爽密桃视频| 亚洲美女视频网站| 中文字幕亚洲第一| 日本一道综合久久aⅴ免费| 香蕉成人免费看片视频app下载| 欧美亚洲国产SUV| 亚洲精品免费在线| 免费国产黄网站在线看| 久久久久亚洲AV无码麻豆| 免费在线观看中文字幕| 成年人免费的视频| 美女视频黄a视频全免费网站色窝| 亚洲精品动漫免费二区| 久久精品蜜芽亚洲国产AV| 国产成人亚洲影院在线观看| 性做久久久久久免费观看| 免费人成网站在线观看不卡| 污视频网站免费观看| 亚洲人成电影网站色www| 久久亚洲美女精品国产精品 | 久草免费福利在线| 另类专区另类专区亚洲| 亚洲精品国产精品国自产网站| 亚洲AV乱码久久精品蜜桃 |