(七)Hibernate中使用JDBC

  • 在hibernate中获取connection数据库连接有两种方法:(操作数据库常用这种方法)
  • 1. session.doReturningWork   返回一个对象,适用于查询方法
  • 2. session.doWork      不返回对象,适用于增删改

案例一:

package action;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cache.spi.QueryResultsRegion;
import org.hibernate.jdbc.ReturningWork;

import bean.User;
import util.HibernateUtil;

public class Query_JDBC {
    public static void main(String[] args) {
        Query_JDBC.jdbc();
    }

    /**
     * 在Hibernate中获取Connection接口
     */
    private static void jdbc() {

        Session session = null;
        Transaction tran = null;

        try {

            session = HibernateUtil.getSession();
            tran = session.beginTransaction();

            User user = session.doReturningWork(new ReturningWork<User>() {

                @Override
                public User execute(Connection conn) throws SQLException {
                    QueryRunner queryRunner = new QueryRunner();
                    String sql = "select username,userid,is_admin as isadmin from user where userid=1";   //数据库中的is_admin和bean中的isdmin不一致
                    User user = queryRunner.query(conn, sql,
                            new BeanHandler<User>(User.class));

                    return user;
                }

            });

            System.out.println("username=" + user.getUsername() + "\t"
                    + "userid=" + user.getUserid() + "\t" + "isadmin?"
                    + user.getIsAdmin());

            tran.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tran.rollback();
        } finally {
            HibernateUtil.closeSession();
        }

    }

}

结果:

代码在下面章节

时间: 2024-11-08 13:08:39

(七)Hibernate中使用JDBC的相关文章

hibernate(七) hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数据表查询操作详解  ,以至于看这篇文章不用那么吃力. --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.cla

在Hibernate中分别使用JDBC和JTA事务的方法

在Hibernate中使用JDBC事务 Hibernate对JDBC进行了轻量级的封装,它本身在设计时并不具备事务处理功能.Hibernate将底层的JDBCTransaction或JTATransaction进行了封装,再在外面套上Transaction和Session的外壳,其实是通过委托底层的JDBC或JTA来实现事务的处理功能的. 要在Hibernate中使用事务,可以在它的配置文件中指定使用JDBCTransaction或者JTATransaction.在hibernate.prope

[原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载

问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagation=Propagation.SUPPORTS 和propagation=Propagation.require对生成Session有何影响 ? 共同点:都会进入aspect切面处理, 试图新建Session,开启Transaction ,都能获得.TransactionStatus 区别: 前者成

hibernate中对于数据库的Text注解出现 No Dialect mapping for JDBC type: -1解决方法

hibernate中对于数据库的Text数据类型不支持. hibernate 使用hql查询包含text类型字段的时候很好.如果使用native sql也就是使用  createSQLQuery方法查询text类型的时候总是报错: org.hibernate.MappingException: No Dialect mapping for JDBC type:-1 atorg.hibernate.dialect.TypeNames.get(TypeNames.java :56) 是hiberna

Hibernate学习(七)———— hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.class,2); d.getStaffSet().size(); //d对象关联Staff集合,h

浅谈JavaEE中的JDBC模板类的封装实现以及合理的建立项目包结构(一)

从今天开始我们一起来聊下有关,javaEE开发中的一些知识,JavaEE的开发用于企业级的开发,但是现在企业中一般也不会使用JDBC开发,大部分都是使用自己公司开发的一套的框架,但是这些框架的架构一般也是会模仿着有名JavaEE开源三大开发框架SSH(Struts2+Spring+Hibernate)或者现在也很流行的SSM开发框架(Spring+SpringMVC+MyBatis) 来进行深度定制以便于适合自己企业的实际开发需求.有的人曾说既然去公司又是重新学习一套框架,还有必要学习开源的三大

Hibernate 中对表的操作

Hibernate CRUD testing Hibernate 中对表的操作, add,load,update,delete,list,pager(分页) package org.test.test; import java.text.SimpleDateFormat; import java.util.List; import org.hibernate.Session; import org.junit.Test; import org.zttc.itat.model.User; impo

Hibernate 中配置属性详解(hibernate.properties)

Hibernate能在各种不同环境下工作而设计的, 因此存在着大量的配置参数.多数配置参数都 有比较直观的默认值, 并有随 Hibernate一同分发的配置样例hibernate.properties 来展示各种配置选项. 所需做的仅仅是将这个样例文件复制到类路径 (classpath)下并做一些自定义的修改. 属性1.Hibernate JDBC属性 属性名 用途 hibernate.connection.driver_class jdbc驱动类 hibernate.connection.ur

Hibernate中,基于Annotation的简单树形结构的实现

在系统设计中,经常用到递归性质的树形结果,比如菜单.多级分类等,一般是在同一个表中定义父子关系实现这种结构. 下面是在Hibernate中,基于Annotation的简单树形结构的实现: 第一步:创建Entity类,并添加注解实现关联关系    ps: 主要是利用@ManyToOne 和 @OneToMany 配置在同一个Entity类中实现树形递归的结构.hibernate注解形式比在xml配置更加简洁 TreeNode.java 1 package com.hfut.hibernate; 2