一.纯原始数据库连接详见http://www.cnblogs.com/lukelook/p/7845757.html

1.Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序

2.创建连接 Connection

String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:XE";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名

String user = "system";// 用户名,系统默认的账户名

String password = "147";// 你安装时选设置的密码

con = DriverManager.getConnection(url, user, password);// 获取连接

3.实例化编译语句preparedStatement

String sql = "select * from student where name=?";// 预编译语句,“?”代表参数

pre = con.prepareStatement(sql);// 实例化预编译语句

pre.setString(1, "小茗同学");/

4.执行语句

result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数

while (result.next())

// 当结果集不为空时

System.out.println("学号:" + result.getInt("id") + "姓名:"

+ result.getString("name"));

}

4.关闭连接

if (result != null)

result.close();

if (pre != null)

pre.close();

if (con != null)

con.close();

}

二.纯hibernate框架数据库操作

1.数据连接

配置主配置文件hibernate.cfg.xml

配置核心关系映射文件  xxx.hbm.xml

创建实体domain类

2.加载配置获取session

Configuration config =new configuration().configure();

SessionFactory factory =config.buidSessionFactory();

Session session = factory.openSeiion();

getCurrentSession创建的session会和绑定到当前线程,而openSession不会。

getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭。

这里getCurrentSession本地事务(本地事务:jdbc)时要在配置文件里进行如下设置

如果使用的是本地事务(jdbc事务)

1 <property name="hibernate.current_session_context_class">thread</property>

如果使用的是全局事务(jta事务)

1 <property name="hibernate.current_session_context_class">jta</property>

getCurrentSession () 使用当前的session,openSession() 重新建立一个新的session

在一个应用程序中,如果DAO 层使用Spring 的hibernate 模板,通过Spring 来控制session 的生命周期,则首选getCurrentSession ()。

在 SessionFactory 启动的时候, Hibernate 会根据配置创建相应的 CurrentSessionContext ,在 getCurrentSession() 被调用的时候,实际被执行的方法是 CurrentSessionContext.currentSession() 。在 currentSession() 执行时,如果当前 Session 为空, currentSession 会调用 SessionFactory 的 openSession 。所以 getCurrentSession() 对于 Java EE 来说是更好的获取 Session 的方法。

3 .语句操作。

(1)根据主键查询

session.load(BankAccountInfo.class,"CN");

(2)query

String sql="FROM IbanData b WHERE b.catalogNo = ?1 ";

Query query =session.createQuery(sql);

query.setString("1","AA753648");

list=query.list();

注意:在hibernate4.0之后对?占位符做了处理,

可以用命名参数的方式=:catalog

或者JPA占位符方式 =?1

from前面可以加上select b.

可以加上事务管理

创建query前

Transaction tx = session.beginTranscation();

操作完成后:tx.commit();

session.save(obj);

session.update(obj);

(2)criteria 操作详见http://www.cnblogs.com/lukelook/p/7921042.html

A.Criteria criteria =session.createCriteria(IbanData.class);

criteria.add(Restrictions.eq("id","56"));

注意:id为实体类中列的名字。

B.Criteria criteria =session.createCriteria(IbanData.class);

Criterion con=Restrictions.eq("id","56");

criteria.add(con);

C.Criteria criteria =session.createCriteria(IbanData.class);

String Sql="CATALO_NO='AA753648'";

criteria.add(Restrictions.sqlRestriction(sql));

注意:sql为where后半部分sql,如果sql为""则为查询全部内容。

D.排序,设置最大值

正序

criteria.addOrder(Order.asc("catalogNo"));

倒序

criteria.addOrder(Order.desc("catalogNo"));

设置最大值

criteria.setMaxResults(40);

F.查询示例

criteria.add(Example.create(obj));

版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。

你可以自行调整Example使之更实用。

Example example = Example.create(cat)

.excludeZeroes() //exclude zero valued properties

.excludeProperty("color") //exclude the property named "color"

.ignoreCase() //perform case insensitive string comparisons

.enableLike(); //use like for string comparisons

List results = session.createCriteria(Cat.class)

.add(example)

.list();

你甚至可以使用examples在关联对象上放置条件。

List results = session.createCriteria(Cat.class)

.add( Example.create(cat) )

.createCriteria("mate")

.add( Example.create( cat.getMate() ) )

.list();

G.Restrictions的其他用法

= Restrictions.eq() 等于

<> Restrictions.not(Exprission.eq()) 不等于

> Restrictions.gt() 大于

>= Restrictions.ge() 大于等于

< Restrictions.lt() 小于

<= Restrictions.le() 小于等于

is null Restrictions.isnull() 等于空值

is not null Restrictions.isNotNull() 非空值

like Restrictions.like() 字符串模式匹配

and Restrictions.and() 逻辑与

and Restrictions.conjunction() 逻辑与

or Restrictions.or() 逻辑或

or Restrictions.disjunction() 逻辑或

not Restrictions.not() 逻辑非

in(列表) Restrictions.in() 等于列表中的某一个值

ont in(列表) Restrictions.not(Restrictions.in())不等于列表中任意一个值

between x and y Restrictions.between() 闭区间xy中的任意值

not between x and y Restrictions.not(Restrictions..between()) 小于值X或者大于值y

H.关联

你可以使用createCriteria()非常容易的在互相关联的实体间建立 约束。

List cats = sess.createCriteria(Cat.class)

.add( Restrictions.like("name", "F%")

.createCriteria("kittens")

.add( Restrictions.like("name", "F%")

.list();

注意第二个 createCriteria()返回一个新的 Criteria实例,该实例引用kittens 集合中的元素。

2.hibernate id 的generator属性

http://www.cnblogs.com/talo/articles/1663978.html

1-1hibernate数据库操作基础的更多相关文章

  1. Oracle数据库操作---基础使用(二)

    此篇承接上一篇的基本原理,继续展开学习,本篇主要面向数据的使用和管理,也就是开发者常用的基础语句,开始喽…… >>>对整表的操作 >创建表   关键字 Create creat ...

  2. MySQL数据库操作基础

    .MySQL 是什么? )软件(Software):工具(解决问题) )数据库管理系统(DBMS) )关系型(Relation)数据库管理系统(RDBMS):类似Oracle 扩展:db-engine ...

  3. hibernate数据库操作基础

    1.根据主键查询 2.getSession().createSQLQuery(sql)和session.createQuery(sql) 3.Seeion的其他方法  4.Hibernate Crit ...

  4. 数据库操作(C#)

    数据库在软件开发中发挥着举足轻重的作用,基本上所有的大项目都会用到数据库.ADO .Net是一组向.Net程序员公开数据访问服务的类,其主要分为数据提供程序(Data Provider)和数据集(Da ...

  5. ThinkPHP 学习笔记 ( 三 ) 数据库操作之数据表模型和基础模型 ( Model )

    //TP 恶补ing... 一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: publ ...

  6. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  7. JSP中的数据库操作,MySQL基础操作(一)

    一.JDBC JDBC(java data base concectivity),是一种用于执行SQL语句的java API,可以为多种关系库提供统一访问. 通常使用JDBC完成以下操作: 1)同数据 ...

  8. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  9. ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )

    一.定义数据表模型 1.模型映射 要测试数据库是否正常连接,最直接的办法就是在当前控制器中实例化数据表,然后使用 dump 函数输出,查看数据库的链接状态.代码: public function te ...

随机推荐

  1. Spring MVC处理(下周完善)

    http://www.cnblogs.com/xiepeixing/p/4244574.html http://blog.csdn.net/kobejayandy/article/details/12 ...

  2. 相位噪声 dBc/Hz

    相位噪声和抖动是对同一种现象的两种不同的定量方式.在理想情况下,一个频率固定的完美的脉冲信号(以1 MHz为例)的持续时间应该恰好是1微秒,每500ns有一个跳变沿.但不幸的是,这种信号并不存在.如图 ...

  3. 6.3 x86处理器如何处理MSI-X中断请求

    PCIe设备发出MSI-X中断请求的方法与发出MSI中断请求的方法类似,都是向Message Address所在的地址写Message Data字段包含的数据.只是MSI-X中断机制为了支持更多的中断 ...

  4. R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...

  5. 各大HotFix热补丁方案分析和比较

    最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed.AndFix.ClassLoader(来源是原QZone,现淘宝的工程师陈钟,在15年年初就已经开始实现)三种.前两个都是阿里 ...

  6. linux驱动---字符设备的注册register_chrdev说起

    首先我们在注册函数里面调用了register_chrdev(MEM_MAJOR,"mem",&memory_fops),向内核注册了一个字符设备. 第一个参数是主设备号,0 ...

  7. Linux 系统裁剪笔记 4 (内核配置选项及删改)

     CDROM filesystem support(CONFIG_ISO9660_FS)[Y/m/n/?]有标准光驱的系统应该选Y.Minix fs support(CONFIG_MINIX_FS)[ ...

  8. 【html5】html5离线存储

    html5本地存储之离线存储 1.为什么使用离线存储 ①最新的主流的浏览器中都已添加了对HTML5的offline storage功能的支持,HTML5离线存储功能非常强大, 它的作用是:在用户没有与 ...

  9. 网页版Rstudio︱RStudio Server多人在线协作开发

    网页版Rstudio︱RStudio Server多人在线协作开发 想了解一下RStudio Server,太给力的应用,可以说成是代码分布式运行,可以节省时间,放大空间. RStudio是一个非常优 ...

  10. Java Web项目(Extjs)报错九

    1.Java Web项目(Extjs)报错九 具体报错如下: 三月 26, 2014 11:48:35 下午 org.hibernate.util.JDBCExceptionReporter logE ...