通過配置hibernate方言包+GBase8s jdbc實現clob、blob、text、byte大物件資料型別操作
h ibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,它將POJO與資料庫表建立對映關係,是一個全自動的orm框架 。 hibernate可以自動生成SQL語句,自動執行,可以隨心所欲的使用物件程式設計思維來操縱資料庫。
不同資料庫語法細節上存在差異,hibernate 可根據方言自動應付底層資料庫訪問所存在的細節差異,將HQL有針對的轉化為某一資料庫所支援的SQL語句 。
GBase8s Hibernate方言包,針對GBase8s資料庫定製的sql解析包,包括資料型別和函式以及語法的對映, 本文通過例項介紹如何通過 hibernate方言包 實現連線GBase8s資料庫,實現 大物件 資料 型別(智慧大物件clob、blob,簡單大物件text、byte)的 新增 與查詢 過程。
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" > gbasedbt </ property >
< property name = "hibernate.connection.password" > GBase8s </ property >
<!-- 配置Hibernate 方言 , 此處為GBase8s 方言類 -->
< 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 class = "com.gbase.Hibernate.User" />
</ 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 物件- 關係 類對映類 , 配置為 class = "com.gbase.Hibernate.User"
3、 配置實體類
hibernate 物件- 關係 類對映類 com.gbase.Hibernate.User , 通過標籤方式對映的資料表和java 類之間對映關係。
// 表明對映為 user 表
@Entity
@Table (name = "user" )
public class User {
@Id
@GeneratedValue
private int userId ;
@Column (name = "userName" , columnDefinition = "varchar" )
private String userName ;
@Column (name = "password" , columnDefinition = "varchar" )
private String password ;
@Column (name = "boolCol" , columnDefinition = "boolean" )
private boolean boolCol ;
// 表明 blobCol 資料庫欄位對映為 blob
@Lob
@Column (name = "blobCol" , columnDefinition = "blob" )
private java.sql.Blob blobCol ;
// 表明 clobCol 資料庫欄位對映為 clob
@Lob
@Column (name = "clobCol" , columnDefinition = "clob" )
private java.sql.Clob clobCol ;
// 表明 byteCol 資料庫欄位對映為 byte
@Column (name = "byteCol" , columnDefinition = "byte" )
private byte [] byteCol ;
// 表明 textCol 資料庫欄位對映為 text
@Column (name = "textCol" , columnDefinition = "text" )
private String textCol ;
public boolean getBoolCol() {
return boolCol ;
}
public void setBoolCol( boolean is2 ) {
boolCol = is2 ;
}
public int getUserId() {
return userId ;
}
public void setUserId( int userId ) {
this . userId = userId ;
}
public String getUserName() {
return userName ;
}
public void setUserName(String userName ) {
this . userName = userName ;
}
public String getPassword() {
return password ;
}
public void setPassword(String password ) {
this . password = password ;
}
public byte [] getByteCol() {
return byteCol ;
}
public void setByteCol( byte [] byteCol ) {
this . byteCol = byteCol ;
}
public String getTextCol() {
return textCol ;
}
public void setTextCol(String textCol ) {
this . textCol = textCol ;
}
public java.sql.Blob getBlobCol() {
return blobCol ;
}
public void setBlobCol(java.sql.Blob blobCol ) {
this . blobCol = blobCol ;
}
public java.sql.Clob getClobCol() {
return clobCol ;
}
public void setClobCol (java.sql.Clob clobCol ) {
this . clobCol = clobCol ;
}
public User() {
super ();
}
}
4、執行用例
1 )插入 資料
public void insertUser(){
// 獲得配置物件
Configuration configure = new Configuration().configure();
// 獲得會話工廠
SessionFactory sessionFactory = configure .buildSessionFactory();
// 獲取會話
Session session = sessionFactory .openSession();
// 開始事物
Transaction transaction = session .beginTransaction();
// 建立物件
User user = new User();
user .setUserName( "zhangsan" );
user .setPassword( "123456" );
user .setBoolCol( true );
// 建立 java.sql.Blob 型別資料
FileInputStream inputStream = new FileInputStream( "C:\\1.txt" );
byte [] content = new byte [9];
inputStream .read( content );
java.sql.Blob blobContent = session .getLobHelper().createBlob( content );
// 建立 java.sql.Clob 型別資料
java.sql.Clob clobContent = session .getLobHelper().createClob( "address001" );
// 設定 blob 欄位值
user .setBlobCol( blobContent );
// 設定 clob 欄位值
user .setClobCol( clobContent );
// 設定 byte 欄位值
user .setByteCol( "b@163.com" .getBytes());
// 設定 text 欄位值
user .setTextCol( "address002" );
// 執行操作 . 返回該物件在資料庫中生成的 id
int id = (Integer) session .save( user );
System. out .println( id );
transaction .commit();
}
2 )查詢資料
public void select User s (){
// 獲得配置物件
Configuration configure = new Configuration().configure();
// 獲得會話工廠
SessionFactory sessionFactory = configure .buildSessionFactory();
// 獲取會話
Session session = sessionFactory .openSession();
// 開始事物
Transaction transaction = session .beginTransaction();
String hql = "from User" ; // 準備 hql 語句
Query query = session .createQuery( hql ); // 建立 Query 對 象
transaction .commit();
List<User> list = query.list();
for (User object : list ){
boolean userBl = object .getBoolCol();
System. out .println( object .getTextCol()); // 獲取 text 型別資料值
System. out .println( object .getClobCol().getSubString(1, 10)); // 獲取 clob 型別資料值
// 獲取 byte 型別資料值
byte [] byteCol = object .getByteCol();
String byteCols = new String( byteCol );
System. out .println( byteCols );
// 獲取 blob 型別資料值
String blobs = new String( object .getBlobCol().getBytes(1, 9));
System. out .println( blobs );
}
}
3) 執行結果
通過以上步驟實現通過hibernate方言包,實現資料表自動建立、blob、clob、text與byte型別資料的插入和查詢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993860/viewspace-2844003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何通過配置hibernate方言包+GBase8s jdbc實現GBase8s資料庫操作JDBC資料庫
- JDBC 處理CLob和Blob型別資料JDBC型別
- BLOB(二進位制大物件:text、ntext或image)型別資料的操作物件型別
- 用JDBC操縱BLOB和CLOB資料JDBC
- GBase8s BLOB型別使用操作示例型別
- mysql BLOB型別 TEXT型別MySql型別
- MySQL 中 blob 和 text 資料型別詳解MySql資料型別
- java jdbc存取oracle clob型別JavaJDBCOracle型別
- Vue通過Blob物件實現匯出Excel功能Vue物件Excel
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- SQL Server資料型別BLOBSQLServer資料型別
- JavaWeb——JDBC八股文、JSBC使用儲存過程、儲存函式、處理CLOB/BLOB型別JavaWebJDBCJS儲存過程儲存函式型別
- java語言操作Oracle資料庫中的CLOB資料型別 (轉)JavaOracle資料庫資料型別
- JDBC複習,oracle的blob,clob的讀寫-zhaiJDBCOracleAI
- 操作Blob型別的方法(zt)型別
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- Hibernate Blob 操作問題!
- Oracle - LOB(大物件資料型別)Oracle物件資料型別
- 【原創】操作Blob型別的方法型別
- GBase8s資料型別介紹資料型別
- 通過資料庫鏈執行TEXT操作的小bug資料庫
- oracle對BLOB型別資料的操作與效能問題(轉載)Oracle型別
- 使用瀚高資料庫hibernate方言報錯資料庫
- 檔案插入 Oracle資料庫 Blob型別Oracle資料庫型別
- BLOB和CLOB的區別以及在ORALCE中的插入和查詢操作
- 關於SQL Server通過OLEDB訪問ORACLE資料表涉及CLOB或BLOB欄位的錯誤提示SQLServerOracle
- JS中資料型別、內建物件、包裝型別物件、typeof關係JS資料型別物件
- Hibernate SQL方言 (hibernate.dialect)SQL
- Redis的五大資料型別實現原理Redis大資料資料型別
- java通過jdbc連結資料庫JavaJDBC資料庫
- MySQL TEXT、DATE、SET 資料型別(轉)MySql資料型別
- 資料庫text型別的長度?資料庫型別
- 通過EFCore呼叫GBase8s資料庫儲存過程資料庫儲存過程
- PDO操作大資料物件大資料物件
- 使用SQL*Loader匯入CLOB和BLOB資料使用案例SQL
- CLOB與BLOB的轉換