如何通過配置hibernate方言包+GBase8s jdbc實現GBase8s資料庫操作

wj_2021發表於2021-11-26

                    h ibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架 hibernate可以自動生成SQL語句,自動執行,可以隨心所欲的使用物件程式設計思維來操縱資料庫。

不同資料庫語法細節上存在差異,hibernate 可根據方言自動應付底層資料庫訪問所存在的細節差異,將HQL有針對的轉化為某一資料庫所支援的SQL語句

GBase8s Hibernate方言包,針對GBase8s資料庫定製的語法解析包, 本文通過例項介紹如何通過 hibernate方言包 實現連線GBase8s資料庫,實現資料新增 與查詢 過程。

1、首先,工程中引入 GBase8s hibernate方言包、hibernate原生包 檔案,以及GBase8s驅動程式。

 

2、 配置檔案

1 )配置 hibernate.cfg.xml 檔案

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

<! DOCTYPE   hibernate-configuration   PUBLIC

     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

     " >

 

< hibernate-configuration >

     < session-factory >

 

         <!-- 配置資料庫連線的基本資訊 : -->

         < property   name = "hibernate.connection.driver_class" >

            com.gbasedbt.jdbc.Driver

         </ property >

         < property   name = "hibernate.connection.url" >

            jdbc:gbasedbt-sqli://172.16.33.240:5555/test:GBASEDBTSERVER=ol_gbasedbt1210_2;

         </ property >

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

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

 

         <!-- 配置 Hibernate 方言,用於針對不同資料庫生成不同底層SQL 語句 -->

        < property   name = "hibernate.dialect" >

            gbase.hibernate.dialect.GBaseDialect

         </ property >

 

         <!-- 顯示 SQL -->

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

         <!-- 格式化 SQL -->

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

         <!-- 關閉事物自動提交 -->

         < property   name = "hibernate.connection.autocommit" > false </ property >

         <!-- hbm : 對映 to DDL -->

         <!-- update :如果資料庫中沒有表,建立一個新的表,如果有,直接使用這個表,並可以更新表的結構。 -->

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

         < mapping   resource = "com/hibernate/util/student.hbm.xml"   />

     </ session-factory >

</ hibernate-configuration >

 

hibernate.cfg.xml 檔案 主要引數說明

1) hibernate.connection.driver_class 屬性,配置為GBase8s 驅動類名稱定義為

com.gbasedbt.jdbc.Driver

2)  hibernate.connection.url 屬性,為GBase8s 資料庫 url

3)  hibernate.connection.username 屬性,為GBase8s 資料庫使用者名稱

4)  hibernate.connection.password 屬性,為GBase8s 資料庫密碼

5)  hibernate.dialect 屬性,為GBase8s 資料庫方言,定義為  

gbase.hibernate.dialect.GBaseDialect

6)  hibernate.connection.url 屬性,為GBase8s 資料庫 url

7)  hibernate 物件- 關係對映檔案 配置 com/hibernate/util/student.hbm.xml

 

2 )配置物件 - 關係對映檔案, com/hibernate/util/student.hbm.xml

com/hibernate/util/student.hbm.xml 檔案如下:

<? xml   version = "1.0" ?>

<! DOCTYPE   hibernate-mapping   PUBLIC

   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

   " >

 

< hibernate-mapping >

< class   name = "com.hibernate.util.Student"   table = "student" >

< id   name = "id"   column = "id" >

</ id >

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

< property   name = "age"   column = "age"   type = "int"   />

</ class >

</ hibernate-mapping >

3、配置實體類

public   class  Student {

 

private   int   id ;

private  String name ;

private   int   age ;

/**

 * @return  the age

 */

public   int  getAge() {

return   this . age ;

}

/**

 * @param  age

 * the name to set

 */

public   void  setAge( int   age ) {

this . age  = age ;

}

 

/**

 * @return  the name

 */

public  String getName() {

return   name ;

}

/**

 * @param  name

 *            the name to set

 */

public   void  setName(String name ) {

this . name  = name ;

}

/**

 * @return  the id

 */

public   int  getId() {

return   id ;

}

/**

 * @param   id

 *            the id   to set

 */

public   void  setId( int   id ) {

this . id  = id ;

}

}

4、執行用例

1 )插入 資料

public   void  insertUser(){

ServiceRegistry serviceRegistry  = new  StandardServiceRegistryBuilder().configure().build();

try  {

SessionFactory sessionFactory  = new  MetadataSources( serviceRegistry ).buildMetadata().buildSessionFactory();

Session session  = null ;

session  = sessionFactory .openSession();

// 開始事物

Transaction transaction  = session .beginTransaction();

Student s  = new  Student();

s .setId(1);

s .setAge(20);

s .setName( "zhangsan" );

session .save( s );

transaction .commit();

session .close();

sessionFactory .close();

} catch  (Exception e ) {

StandardServiceRegistryBuilder. destroy ( serviceRegistry  );

e .printStackTrace();

}

}

 

1 )插入 資料

public   void   select User s (){

 

 

ServiceRegistry serviceRegistry  = new  StandardServiceRegistryBuilder().configure().build();

try  {

SessionFactory sessionFactory  = new  MetadataSources( serviceRegistry ).buildMetadata().buildSessionFactory();

Session session  = null ;

session  = sessionFactory .openSession();

String hql = "select u.name,u.age from Student u" ;

Query   q = session .createQuery( hql );

List<Object[]> list = q .list() ;

for  ( int   i  = 0; i  < list .size(); i ++) {

Object[] os = list .get( i );

System. out .println( "name:" + os [0]+ "age " + os [1]);

}

session .close();

sessionFactory .close();

} catch  (Exception e ) {

StandardServiceRegistryBuilder. destroy ( serviceRegistry  );

e .printStackTrace();

}

}

通過以上步驟實現通過 hibernate方言包 實現資料的插入和查詢

 

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993860/viewspace-2844320/,如需轉載,請註明出處,否則將追究法律責任。

相關文章