ITPub博客

首页 > 数据库 > 国内数据库 > 通过配置hibernate方言包+GBase8s jdbc实现clob、blob、text、byte大对象数据类型操作

通过配置hibernate方言包+GBase8s jdbc实现clob、blob、text、byte大对象数据类型操作

原创 国内数据库 作者:wj_2021 时间:2021-11-25 09:28:27 0 删除 编辑

     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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-01-25

  • 博文量
    35
  • 访问量
    12176