一.纯原始数据库连接详见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. Luogu P1757 通天之分组背包

    题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品相互冲突,现在,他想知道最大 ...

  2. javascript模块化编程库require.js的用法

    随着javascript的兴起,越来越多的公司开始将JS模块化,以增加开发的效率和减少重复编写代码的.更是为了能更加容易的维护日后的代码,因为现在的随着人们对交互效果的越来越强烈的需求,我们的JS代码 ...

  3. 【java学习笔记】正则表达式

    一.正则表达式 1.预定义字符集  . 表示任意一个字符 \d 表示任意一个数字 \w 表示任意一个单词字符(只能是数字.字母.下划线) \s 表示任意一个空白字符(\t\r\n\f\x0B) \D ...

  4. java中JDBC报错(一)

    java中JDBC报错(一) 1.具体报错如下 com.mysql.jdbc.MySqlDataTruncation:Data truncation:Data too long for column ...

  5. [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK:

    1.错误描述 [2015-06-10 20:53:50 - Android SDK] Error when loading the SDK: Error: Error parsing D:\Andro ...

  6. zTree实现单独选中根节点中第一个节点

    zTree实现单独选中根节点中第一个节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树& ...

  7. freemarker.template.TemplateException:Error executing macro:mainSelect

    1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...

  8. eclipse 修改默认的author

    1. 在eclipse.ini中添加 -vmargs -Duser.name={author name} 记得一定要在-vmargs之后,否则无效. 2. 设置eclipse参数 windows--& ...

  9. JVM 调优系列之图解垃圾回收

    摘要: jvm必知系列,总结一些常见jvm回收机制,方便查阅 对于调优之前,我们必须要了解其运行原理,java 的垃圾收集Garbage Collection 通常被称为"GC", ...

  10. Javascript设计模式(1)

    本文是学习了<JavaScript设计模式>(谢廷晟 译)做的学习笔记 一.JavaScript的灵活性 1. 普通 functon function startAnimation() { ...