绑定本地的Session图示解析:

代码的结构:

代码:

SaveServlet.java

 package com.itheima.servlet;

 import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.itheima.domain.User;
import com.itheima.service.UserService; /**
* Servlet implementation class SaveServlet
*/
public class SaveServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public SaveServlet() {
super();
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User u1=new User();
u1.setName("测试一"); User u2=new User();
u2.setName("测试二"); new UserService().save(u1, u2);
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

UserService.java

 package com.itheima.service;

 import org.hibernate.Session;
import org.hibernate.Transaction; import com.itheima.dao.UserDao;
import com.itheima.domain.User;
import com.itheima.utils.HibernateUtils; public class UserService { public void save(User u1,User u2) {
UserDao dao=new UserDao();
//获取session
Session session=HibernateUtils.getCurrentSession();
//开启事务
Transaction tr=session.beginTransaction();
try {
dao.save1(u1);
dao.save2(u2);
//提交事务
tr.commit();
} catch (Exception e) {
e.printStackTrace();
//出现问题:回滚事务
tr.rollback();
}finally { } }
}

UserDao.java

 package com.itheima.dao;

 import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction; import com.itheima.domain.User;
import com.itheima.utils.HibernateUtils; public class UserDao { public void save1(User u1) { Session session=HibernateUtils.getCurrentSession();
session.save(u1);
}
public void save2(User u2) {
Session session=HibernateUtils.getCurrentSession();
session.save(u2);
}
}

HibernateUtils.java(稍微修改)

 package com.itheima.utils;

 import javax.servlet.jsp.jstl.core.Config;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; /*
* Hibernate框架的工具
* @author chenyanlong
*/
public class HibernateUtils { //Curl+shift+x
private static final Configuration CONFIG;
private static final SessionFactory FACTORY; //编写静态代码
static {
//加载配置文件
CONFIG =new Configuration().configure();
//构造工厂
FACTORY=CONFIG.buildSessionFactory();
} /*
* 从工厂获取Session对象
* @return
*/
public static Session getSession() {
return FACTORY.openSession(); }
//获取本地Session
public static Session getCurrentSession() {
return FACTORY.getCurrentSession();
}
public static void main(String[] args) {
//调用获取session的方法
getSession();
}
}

hibernate.cfg.xml(开启绑定本地的session)

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<!-- 记住:先配置sessionFactoryy --> <session-factory>
<!-- 必须的配置 -->
<!-- 配置连接数据库的基本的信息: -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day02</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property> <!-- 数据库的方言: -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 可选配置 -->
<!-- 显示SQL语句,在控制台显示 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 生成数据库的表结构
update:如果没有表结构,创建表结构。如果存在,不会创建,添加数据
-->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 设置数据库的隔离级别,就使用默认值就OK
<property name="hibernate.connection.isolation">4</property>
--> <!-- 开启绑定本地的session -->
<property name="hibernate.current_session_context_class">thread</property> <!-- 映射配置文件,需要引入映射的配置文件 -->
<mapping resource="com/itheima/domain/User.hbm.xml"/> </session-factory>
</hibernate-configuration>

绑定本地的Session的更多相关文章

  1. socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么?

    参考: https://bbs.csdn.net/topics/391024376 别瞎猜测. 所谓bind,就是指绑定本地接受端口. 指定ip,是为了分辨多ip主机. --------------- ...

  2. Android菜鸟的成长笔记(18)——绑定本地Service并与之通信

    在上一篇中介绍了Service与Activity的区别及Service两种启动方式中的第一种启动方式startService(). 我们会发现用startService().stopService() ...

  3. 实验查看PHP本地的Session信息

    通过Nginx调度器负载后端两台Web服务器,实现以下目标: - 部署Nginx为前台调度服务器 - 调度算法设置为轮询 - 后端为两台LNMP服务器 - 部署测试页面,查看PHP本地的Session ...

  4. Nginx绑定IP,解决session共享

    1.Nginx通过负载均衡IP地址固定绑定,解决Session共享           upstream note.java.itcast.cn{    ip_hash;        server ...

  5. WPF——数据绑定(二)绑定方法—绑定本地对象

    注意:本人初学WPF,文中表达或技术性问题请勿见怪,欢迎指正,谢谢 标记拓展语法:绑定到本地对象 什么是绑定到本地对象,我个人理解就是实现UI层上两个或多个控件的相互关联,一个控件的状态改变,导致另一 ...

  6. 绑定本地Service并与之通信

    绑定Service需要调用 public boolean bindService (Intent service, ServiceConnection conn, int flags): 传入一个Se ...

  7. Android入门:绑定本地服务

    一.绑定服务介绍   前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在: 但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定: ...

  8. 绑定本地Service并与之通信-----之二

    import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.app.Se ...

  9. Golang client绑定本地IP和端口

    有时需要指定网络通信时本地使用的IP地址和端口号. 在Go语言中可通过定义 Dialer 中LocalAddr 成员实现. Dialer结构定义如下: // A Dialer contains opt ...

随机推荐

  1. 后台web端的react

    在api.js里,存放着各种功能引用的方法,比如这个fakeRegister,里面传参数params,返回要要调回的地址,${HOST1}/user/register requset会返回codeme ...

  2. Java 学习(1) ---JDK安装和配置环境变量

    一,Java 开发的第一步,就是安装JDK(Java Development ToolKit  Java开发工具包) JDK 是Java开发的核心,因为它包括Java 运行环境,工具包和命令.当我们安 ...

  3. codeforces534B

    Covered Path CodeForces - 534B The on-board computer on Polycarp's car measured that the car speed a ...

  4. ffmpeg 转码命令与ffplay

    ffmpeg.exe用于视频的转码. ▫ 最简单的命令 ffmpeg -i input.avi -b:v 640k output.ts 该命令将当前文件夹下的input.avi文件转换为output. ...

  5. M3U8文件

    M3U本质上说不是音频文件,它是音频文件的列表文件,是纯文本文件.你下载下来打开它,播放软件并不是播放它,而是根据它的记录找到网络地址进行在线播放. M3U文件的大小很小,也就是因为它里面没有任何音频 ...

  6. 使用JSch远程执行shell命令

    package com.nihaorz.jsch; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import ...

  7. mosquitto发布消息

    ./mosquitto_pub -t '$SYS/broker/clients/status/online' -m 1

  8. HDU1800 字典树写法

    题意:高级魔法师可以教低级魔法师 魔法扫把技能,同时教会了的低级魔法师又可以教比他更低级是,是传递的关系 同时如果教会了的话,他们可以同时坐一个扫把 问最少需要多少个扫把 思路:就是判断相同的数字最多 ...

  9. UOJ274 [清华集训2016] 温暖会指引我们前行 【LCT】【最大生成树】

    题目分析: 差评,最大生成树裸题.hack数据还卡常. 代码: #include<bits/stdc++.h> using namespace std; ; struct LCT{ ],d ...

  10. 【BZOJ1013】【JSOI2008】球形空间产生器 高斯消元

    题目描述 有一个\(n\)维空间中的球,告诉你球面上\(n+1\)个点的坐标,求球心的坐标. \(n\leq 10\) 题解 设\(a_{i,j}\)为第\(i\)个点的第\(j\)维坐标,\(i=0 ...