Hibernate配置

            首先 :添加Hibernate工具

          一、 help—>Install NewSoftWare_->粘貼【http://download.jboss.org/jbosstools/neon/stable/updates/】->點擊add然後等...->選擇Jboss Web and Java EE Development目錄下的HibernateTools。

         2創建一個java項目 爲其添加jar包。

          對項目進行【右擊】----->BuildPath---->addLibraries----->User Library-->


   這裏需要3類jar包

    1>  導入Mysql的jdcb驅動

    2>  junit4

    3>hibernate

         1.antlr-2.7.7.jar
       2.dom4j-1.6.1.jar
       3.hibernate-commons-annotations-4.0.1.Final.jar
       4.hibernate-core-4.1.10.Final.jar
       5.hibernate-jpa-2.0-api-1.0.1.Final.jar
       6.javassist-3.15.0-GA.jar
       7.jboss-logging-3.1.0.GA.jar
       8.jboss-transaction-api_1.1_spec-1.0.0.Final.jar
    二、建立hibernate配置文件hibernate.cfg.xml  項目【右擊】->new->other->hibernate->


        

<?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>
    // 數據庫的連接
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property>
  //使用的方言
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
   //是否將SQL語句顯示到後臺
    <property name="show_sql">true</property>
     <property name="format_sql">true</property>
     
    <property name="hbm2ddl.auto">update</property>
   <property name="current_session_context_class">thread</property>
    其映射資源爲:包名/Student.hbm.xml
       <mapping resource="Student.hbm.xml"/>


    </session-factory>
</hibernate-configuration>
  

   hibernate.cfg.xml詳情請看http://www.cnblogs.com/pepcod/archive/2013/02/19/2917376.html


     三、創建持久化類

          需滿足

               1.公有類

               2.提供共有的不帶參數的默認的構造方法

               3.屬性私有

               4.屬性setter/getter封裝

     四  創建對象-關係映射文件       步驟: src->

             

         選擇自己需要的對象。



<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-6-6 9:24:22 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="hibernate.Student" table="STUDENT">
        <id name="sid" type="int">
            <column name="SID" />
            <generator class="assigned" />
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="brithday" type="java.util.Date">
            <column name="BRITHDAY" />
        </property>
        <!--  
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
        -->
        <property name="picture" type="java.sql.Blob" access="field">
            <column name="PICTURE" />
        </property>
        <component name="address" class="hibernate.Address">
           <property name="postcode" column="POSTCODE"/>
           <property name="phone" column="PHONE"/>
           <property name="address" column="ADDRESS"/>
        </component>
    </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-6-6 9:24:22 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping 
   schema="數據庫schema的名字" catalog="數據庫catalog的名字"
   default-cascade="none" 其默認值爲none  默認的級聯風格
   default-access="property"  其爲默認值,Hibernate用來訪問所有屬性的策略。
                            可以通過實現PropertyAccessor接口自定義
  default-lazy="true" 其爲默認值 指定未明確註明lazy屬性的Java屬性和集合類,
                       Hibernate會採取什麼樣的默認加載風格
   auto-import="true" 其爲默認值:指定是否在查詢語言中使用非全限定的類名(僅限於本映射文件中的類)
   package=""指定一個包前綴,如果在映射文檔中沒有指定全限定類名,就使用這個作爲包名
     >
   <!-- name 定義的持久化類或者接口的java全限定名   table 對應數據庫表名   -->
    <class name="hibernate.Student" table="STUDENT">
     <!-- id必須定義   對應數據庫表主鍵字段,一般爲每一個實例包含唯一的標識 -->
      <!-- name 標識屬性的名字  type 標識Hibernate類型的名字(如果沒配置,hibernate將會轉化爲相應的數據庫類型) -->
       <!-- column 主鍵字段的名字 -->
        <id name="sid" type="int">
            <column name="SID" />
            <!-- 用來爲該持久化類的實例生成唯一的標識 -->
            <generator class="assigned" />
        </id>
        
        <!-- 爲類定義了一個持久化的,JavaBean風格的屬性  type 爲java類型 -->
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="brithday" type="java.util.Date">
            <column name="BRITHDAY" />
        </property>
        <!--  
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
        -->
        <property name="picture" type="java.sql.Blob" access="field">
            <column name="PICTURE" />
        </property>
        
        
        <!--組件屬性      ----- 實體類Student的屬性address 是用戶自定義的Address類的對象 -->
        <component name="address" class="hibernate.Address">
           <property name="postcode" column="POSTCODE"/>
           <property name="phone" column="PHONE"/>
           <property name="address" column="ADDRESS"/>
        </component>
    </class>
</hibernate-mapping>
詳情請看http://blog.csdn.net/csh624366188/article/details/7578939
之後將這個配置文件在hibernate.cfg.xml中進行配置
    <mapping resource="Student.hbm.xml"/>
   五使用junit4進行測試
      使用hibernate API編寫訪問數據庫代碼
    
public class testSaveStudent {
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;
 @Before
 public void init()
 {
	 //創建配置對象 讀取.cfg.xml文件
	 Configuration config=new Configuration().configure();
	 //創建服務註冊對象
	 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
	 //創建會話工廠對象 讀取
	 sessionFactory=config.buildSessionFactory(serviceRegistry);
	 //會話對象
	 session=sessionFactory.openSession();
	 //開啓事務
	 transaction=session.beginTransaction();
	 
 }
 @After
 public void destroy()
 {
//默認是非自動提交的方式,所以session在保存對象時,不開啓事務,並且手工提交事務,對象並不會真正保存在數據庫中
//hibernnate像jdbc自動提交事務,必須調用session對象doWork()方法,獲取jdbc的connection後,設置其爲自動提交事務模式
//(注意:通常並不推薦這樣做)
	 transaction.commit();//提交事務
	 session.close();
	 sessionFactory.close();
 }
@Test
public void testAddress()
{
	 Address address=new Address("1233","4321","123");
	 Student s=new Student(3,"張三丰","男",new Date(),address);
	  session.save(s);

}





       















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章