JAVA框架:hibernate(四)
一、绑定本地session
原理:之前connection实现事务一个道理,2种方法:1、变量下传。2、因为servlet是单线程,和本地当前线程绑定。
配置:
1)配置核心配置文件hibernate.cfg
<!--绑定本地session-->
<property name="hibernate.current_session_context_class">thread</property>
2)hibernate本身底层已经帮忙绑定当前线程(threadLocal)通过getCurrentSession 获取session。
工具类:
package jd.com.test; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class hibernateUtils {
private final static Configuration CONFIURATION;
private final static SessionFactory SESSIONFACTORY;
static {
CONFIURATION=new Configuration().configure();
SESSIONFACTORY=CONFIURATION.buildSessionFactory();
}
public static Session getSession(){
return SESSIONFACTORY.openSession();
}
public static Session getCurrenSession(){
return SESSIONFACTORY.getCurrentSession();
}
}
3)业务层进行事务定义:
package jd.com.service.Custorm; import jd.com.dao.Dao;
import jd.com.hibernatepro.Customer;
import org.hibernate.Session;
import jd.com.dao.hibernateUtils;
import org.hibernate.Transaction;
import org.junit.Test; public class service {
@Test
public void savobj(){
Customer customer =new Customer();
customer.setName("iio");
Customer customer1 =new Customer();
customer1.setName("ooc");
Session session=hibernateUtils.getCurrenSession();
Transaction tr=session.beginTransaction();
try {
Dao dao=new Dao();
dao.saveCustorm(customer);
Integer a=/;
dao.saveCustorm(customer1);
tr.commit();
}catch (Exception ex){
ex.printStackTrace();
tr.rollback();
}
// 不要关闭session 线程结束就自动关闭session。 }
}
dao层执行:
package jd.com.dao; import jd.com.hibernatepro.Customer;
import org.hibernate.Session; public class Dao {
public void saveCustorm(Customer custome){
Session session=hibernateUtils.getCurrenSession();
session.save(custome);
}
}
需要注意的是session不需要释放。当前线程结束就释放session。
简单的条件查询:
**Query查询接口**
. 具体的查询代码如下
// 1.查询所有记录
/*Query query = session.createQuery("from Customer");
List<Customer> list = query.list();
System.out.println(list);*/
// 2.条件查询:
/*Query query = session.createQuery("from Customer where name = ?");
query.setString(0, "tom");
List<Customer> list = query.list();
System.out.println(list);*/
// 3.条件查询:
/*Query query = session.createQuery("from Customer where name = :aaa and age = :bbb");
query.setString("aaa", "tom");
query.setInteger("bbb", 38);
List<Customer> list = query.list();
System.out.println(list);*/
----------
JAVA框架:hibernate(四)的更多相关文章
- ORM框架Hibernate (四) 一对一单向、双向关联映射
简介 在上一篇博客说了一下多对一映射,这里再说一下一对一关联映射,这种例子在生活中很常见,比如一个人的信息和他的身份证是一对一.又如一夫一妻制等等. 记得在Java编程思想上第一句话是“一切皆对象”, ...
- JAVA 框架hibernate (三)(数据库更新丢失)
一.场景: 我们在并发操作数据库同一个字段,比如:name:tom age:22这条数据.有2个同时进行操作.A操作该数据的name改成admin,B操作这条数据的age改成:35.然后A先把数据更 ...
- JAVA框架--hibernate、struts2、spring
JAVAEE——spring01:介绍.搭建.概念.配置详解.属性注入和应用到项目 JAVAEE——struts2_04:自定义拦截器.struts2标签.登陆功能和校验登陆拦截器的实现 JA ...
- java框架之Spring(4)-Spring整合Hibernate和Struts2
准备 导包 Struts2 导入 Struts2 zip 包解压目录下 'apps/struts-blank.war' 中所有 jar 包,如下: asm-3.3.jar asm-commons-3. ...
- 【JAVA框架】Hibernate 与Mybatis 区别
Hibernate Mybatis 简介 区别 与联系 欢迎提出见解及转载. 1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关 ...
- Java框架spring 学习笔记(十四):注解aop操作
回见Java框架spring Boot学习笔记(十三):aop实例操作,这里介绍注解aop操作 首先编写一个切入点HelloWorld.java package com.example.spring; ...
- java 三大框架 hibernate部分知识实现增删该查操作
1.三层架构 表现层 web层(MVC是一个表现层的设计模型) 业务层 service层 持久层 dao层2.三大框架和三层架构的关系(建议学习三大框架的顺序:先学习hibernat ...
- 有可能挑战Java优势的四种技术
2012-02-22 Java是一种杰出的产业开发语言,这是因为它带来了伟大的统一和对事实上以前并不存在的重要标准的关注.但是和所有语言一样,Java将来也会褪色.依据我做的超越Java的研究,一个 ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...
- 框架Hibernate笔记系列 基础Session
标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...
随机推荐
- SSM整合的配置文件
一.spring-web.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...
- 使用PHPExcel实现数据批量导入到数据库
此例子只使用execel2003的.xls文档,若使用的是其他版本,可以保存格式为“Execel 97-2003 工作簿(*.xls)”即.xls文件类型即可! 功能说明:只能上传Excel2003类 ...
- influxdb-1.7.2.x86_64安装 install influxdb-1.7.2.x86_64 on RedHat & CentOS
1.下载安装 wget http://dl.influxdata.com/influxdb/releases/influxdb-1.7.2.x86_64.rpm https://portal.infl ...
- stylus常用写法
带参数 border-radius(val) -webkit-border-radius: val -moz-border-radius: val border-radius: val button ...
- 原生css 中变量的使用
前两天看到阮大神的一篇在css中使用变量的文章,整理了一下. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 ...
- (转)预处器的对比——Sass、LESS和Stylus
英文原文:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-sho ...
- svn本地连接服务器失败,但是浏览器可以
tortoise svn无法连接到服务器,清空“Autherticate data”后,再进行更新,提交,log查看等操作,svn还是不提示输入用户名和密码,而是报: error: Unable to ...
- Oracle 远程链接oracle数据库服务器的配置
远程链接oracle数据库服务器的配置 by:授客 QQ:1033553122 原理: 一.Oracle客户端与服务器端的通讯机制 1.OracleNet协议 如下图所示,Oracle通过Oracle ...
- JavaScript修改日期格式
<script> //封装时间格式 function format(time, format) { var t = new Date(time); var tf = function (i ...
- webpack中配置Babel
Babel是一个javascript编译器,可以将ES6和更新的js语法转换成ES5的,使代码在较老的浏览器里也能正常运行. 一.安装 npm install --save-dev babel-loa ...