如何通过配置hibernate方言包+GBase8s jdbc实现GBase8s数据库操作

hibernate是一个开放源代码的对象关系映射框架,它对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"?>
    <!-- 配置数据库连接的基本信息: -->
    <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.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"?> 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 selectUsers(){

	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方言包,实现数据的插入和查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值