h
ibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架
。
hibernate可以自动生成SQL语句,自动执行,可以随心所欲的使用对象编程思维来操纵数据库。
不同数据库语法细节上存在差异,hibernate 可根据方言自动应付底层数据库访问所存在的细节差异,将HQL有针对的转化为某一数据库所支持的SQL语句 。
GBase8s Hibernate方言包,针对GBase8s数据库定制的语法解析包, 本文通过实例介绍如何通过 hibernate方言包 实现连接GBase8s数据库,实现数据添加 与查询 过程。
1、首先,工程中引入 GBase8s hibernate方言包、hibernate原生包 文件,以及GBase8s驱动程序。

1 )配置 hibernate.cfg.xml 文件
<? 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 = "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"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
< 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博客 ” ,链接:https://blog.itpub.net/69993860/viewspace-2844320/ ,如需转载,请注明出处,否则将追究法律责任。