溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

hibernate第一個例子-保存對象

發(fā)布時間:2020-07-29 01:07:42 來源:網(wǎng)絡(luò) 閱讀:304 作者:yayaAA 欄目:數(shù)據(jù)庫

3.hibernate第一個例子-保存對象

使用hibernate框架需要導(dǎo)入的jar包:

antlr-2.7.6

backport-util-concurrent

c3p0-0.9.1

commons-collections-3.1    apache集合幫助的包

commons-logging-1.1.1日志

dom4j-1.6.1解析XML

ehcache-1.5.0緩存框架

hibernate3hibernate核心包

javassist-3.9.0.GA代理模式工具包,解決懶加載問題

jta-1.1

log4j日志

mysql-connector-java-5.1.10-bin數(shù)據(jù)庫連接

slf4j-api-1.5.8

slf4j-log4j12


Person-持久化類

/**
 * 對象的序列化的作用:讓對象在網(wǎng)絡(luò)上傳輸,以二進制的形式傳輸
 * Serializable標示接口
 */
public class Person implements Serializable{
    private Long pid;
    private String pname;
    private String psex;
    set,get方法
}


映射文件 Person.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">
<hibernate-mapping>
    <!-- 
        用來描述一個持久化類
        name  類的全名
         table 對應(yīng)的表名,可以不寫  默認值和類名一樣 
         catalog  數(shù)據(jù)庫的名稱  一般不寫
     -->
    <class name="cn.itcat.domain.Person">
        <!-- 
            標示屬性  和數(shù)據(jù)庫中的主鍵對應(yīng)
            name  屬性的名稱
            column 列的名稱
            length 表中字段長度
         -->
        <id name="pid" column="pid" length="200" type="java.lang.Long">
            <!-- 
                主鍵的產(chǎn)生器
              就該告訴hibernate容器用什么樣的方式產(chǎn)生主鍵-->
            <generator class="increment"></generator>
        </id>
        <!-- 描述一般屬性 -->
        <property name="pname" column="pname" length="20" type="string"></property>
        <property name="psex" column="psex" length="10" type="java.lang.String"></property>
    </class>
</hibernate-mapping>


配置文件 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">

<hibernate-configuration>
    <!--一個session-factory只能連接一個數(shù)據(jù)庫-->
    <session-factory>
        <!--數(shù)據(jù)庫的用戶名-->
        <property name="connection.username">root</property>
        <!--密碼-->
        <property name="connection.password">root</property>
        <!-- url-->
        <property name="connection.url">
            jdbc:mysql://localhost:3306/hibernateDay01
        </property>
            <!-- 
                "hbm2ddl.auto"作用:根據(jù)持久化類和映射文件生成表
                validate 只校驗
                create-drop啟動hibernate創(chuàng)建,關(guān)閉hibernate銷毀表
                create 啟動hibernate容器生成表
                update 啟動hibernate容器時檢查持久化類和表對不對應(yīng),如果不對應(yīng),創(chuàng)建表,對應(yīng)的話,驗證。
            -->
        <property name="hbm2ddl.auto">update</property>
            <!-- 
                顯示hibernate內(nèi)部生成的sql語句
            -->
        <property name="show_sql">true</property>
        <mapping resource="cn/itcat/domain/Person.hbm.xml" />
 
    </session-factory>
</hibernate-configuration>

測試

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
 
public class PersonTest {
    @Test
    public void testCreateTable(){ //測試數(shù)據(jù)庫中會不會根據(jù)持久化類和映射文件生成表
        Configuration configuration = new Configuration();
        configuration.configure();  //加載配置文件1、該配置文件必須放在classpath下2、名稱必須為hibernate.cfg.xml
        configuration.buildSessionFactory();
        }
    @Test
    public void testSavePerson(){
        Configuration configuration = new Configuration();
        configuration.configure();  
        SessionFactory factory = configuration.buildSessionFactory();
        
        Session session = factory.openSession();
        Transaction transaction = session.beginTransaction();
        
        Person person = new Person();
        person.setPname("班長2");
        person.setPsex("女");
        
        /**
         * 參數(shù)必須持久化對象
         */
        session.save(person);
        
        transaction.commit();
        session.close();
    }
}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI