青岛做网站
        行业新闻
行业新闻
当前位置:首页> 新闻动态 > 行业新闻

使用Hibernate连接不同数据库方法总结

更新时间:2016-10-12

今天青岛做网站就跟大家分享一下在项目实践中对Hiberante连接不同数据库的驱动程序及SQL方言用法的一些随笔总结,希望对大家有所帮助。

第一:Hibernate不同数据库的连接方法
1、Sql Server :
  <!--Sql Server 驱动程序 eg. jtds-1.2.jar-->
  <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
  <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>

  <!-- JDBC URL -->
  <property name="connection.url">
       jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname
  </property>

  <!-- 数据库用户名-->
  <property name="connection.username">sa</property>

  <!-- 数据库密码-->
  <property name="connection.password"></property>
2、Mysql:
 
  <!--MySql 驱动程序 eg. mysql-connector-java-5.0.4-bin.jar-->
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

  <!-- JDBC URL -->
  <property name="connection.url">
       jdbc:mysql://localhost/dbname?characterEncoding=gb2312
  </property>

  <!-- 数据库用户名-->
  <property name="connection.username">root</property>

  <!-- 数据库密码-->
  <property name="connection.password">root</property>
3、Oracle :
  <!--Oracle 驱动程序 ojdbc14.jar-->
  <property name="dialect">org.hibernate.dialect.OracleDialect</property>
  <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

  <!-- JDBC URL -->
  <property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>

  <!-- 数据库用户名-->
  <property name="connection.username">test</property>

  <!-- 数据库密码-->
  <property name="connection.password">test</property>

第二:Hibernate操作数据库的各种方法总结


1、hibernate使用原生态的sql语句执行数据库查询
有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不是原生态的sql语句,数据库不支持,因此情愿选择回到jdbc时代。这样既耗时耗力,又破坏面向对象的编程。其实,hibernate已经考虑到这个问题,hibernate可以执行原生态的sql语句,正对每种数据库,你可以写对应的sql语句,然后用createSQLQuery(sql)即可。
                /**
   * 本地sql的检索方式,使用原生态的sql语句检索
   *
   */
  Session session = this.getSession();
  String sql = "select * from course where cid=:id";
  Query query = session.createSQLQuery(sql);// 本地SQL检索方式
  query.setInteger("id", c_id);
  query.list();// 返回持久化的list
2、query执行查询操作(基本方式,字符串连接方式生成hql语句)

query执行查询操作,可以返回唯一对象或者是对象列表

(1)query返回对象列表

              /**
   * hql的检索方式,执行查询数据库操作,返回对象的列表
   * 采用hql语句连接方式
   */
  Session session = this.getSession();
  String hql = "select * from CourseDO where CId="+id+"";
  Query query = session.createQuery(hql);// 本地SQL检索方式
  query.list();// 返回持久化的list

(2)query返回唯一对象
              /**
   * hql的检索方式,执行查询数据库操作,返回唯一对象
   * 采用hql语句连接方式
   */
  Session session = this.getSession();
  String hql = "select * from CourseDO where CId="+id+"";
  Query query = session.createQuery(hql);// 本地SQL检索方式
  query.uniqueResult();// 返回持久化的list
3、query执行查询操作

 hql采用参数方式,其中参数绑定方式分为两种:按照名字绑定,按照位置绑定

(1)hql参数绑定采用按照名字绑定
               /**
   * hql的检索方式,执行查询数据库操作,返回对象的列表
   *
   * 参数绑定的形式分为按名字绑定,按位置绑定 此处是按照名字绑定
   */
  Session session = this.getSession();
  String hql = "select * from CourseDO where CId=:id";
  Query query = session.createQuery(hql);// 本地SQL检索方式
  query.setInteger("id", c_id);// 名字绑定参数
  query.list();// 返回持久化对象的list列表
 

(2)hql参数绑定采用按照位置绑定
               /**
   * hql的检索方式,参数绑定的形式分为按名字绑定,按位置绑定 此处是按照位置绑定
   */
  String hql = "from CourseDO where CId=?";
  Session session = this.getSession();
  Query query = session.createQuery(hql);
  query.setParameter(0, c_id);// 位置绑定方式
  query.uniqueResult();// 检索单个对象,返回唯一值
4、query执行更新,删除操作

利用query的executeUpdate()方法实现

               /**
   * query执行更新,删除等非查询语句
   *
   */
  String hql = "delete from CourseDO where CId=? and Time=?";
  Session session = this.getSession();
  Query query = session.createQuery(hql);
  query.setParameter(0, c_id);// 位置绑定方式
  query.setDate(1, new Date());// 位置绑定方式,设置为Date类型
  query.executeUpdate();// 执行delete,update和insert into 语句

 

 

免责声明:本站所有资讯内容搜集整理于互联网或者网友提供,并不代表本网赞同其观点,仅供学习与交流使用,如果不小心侵犯到你的权益,如果你对文章内容、图片和版权等问题存在异议,请及时联系我们删除该信息。