Nhibernate 使用 (二)
在第一篇中该做的配置基本上已经全部完成,现在直接开始测试
public static ISession NhibClient()
{
try
{
// Nhibernate 配置文件的位置
var path=AppDomain.CurrentDomain.BaseDirectory + "../../xml/NHibernate.cfg.xml";
ISessionFactory sf = new Configuration().Configure(path).BuildSessionFactory();
ISession session = sf.OpenSession();//打开Session
return session;
}
catch (Exception)
{
return null;
} }
数据表实体
public class UserModel
{
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
public virtual int Age { get; set; } }
var client = NhibInfo.NhibClient();
UserModel myUser = new UserModel { Id = , UserName = "dong", Age = };
client.Update(myUser);
client.Flush();
Console.WriteLine("执行完成!");
//查询 注意:from table 时,table不能是数据中表的名字,必须是数据库实体的名字
var list = client.CreateQuery("from UserModel where UserName='shanghai';").List<UserModel>();
二:client.Flush();的作用
1. ession flush在commit之前默认都会执行他。也可以手动执行它,他主要做了两件事
1) 清理缓存。
2) 执行SQL。
session在什么情况下执行flush
* 默认在事务提交时
* 显示的调用flush
* 在执行查询前,如:iterate
2.在下面的情况下,Hibernate会调用Session.flush()以清理缓存:
1)事务提交时如果flush模式不为FlushMode.NEVER,commit()将调用flush().
2)在某些查询语句之前(此查询语句之前的语句已经改变了数据库状态,所以需要调用flush()以同步数据库是查出来的数据是经过更改的)。在调用Session.flush()时,涉及的SQL语句会按照下面的顺序执行。
3.在调用Session.flush()时,涉及的SQL语句会按照下面的顺序执行。
(1所有的实体进行插入的语句,其顺序按照对象执行Session.save()的时间顺序。
(2)所有对实体进行更新的语句
(3)所有进行集合的删除语句
(4)所有对集合元素进行删除,更新或者插入的语句
(5)所有进行集合插入的语句
(6)所有对实体进行删除的语句,其顺序按照对象执行Session.delete()的时间顺序。
(7)有一个例外是,如果对象使用native方式生成的ID(持久化标识),则他们一执行save就会被插入。除非明确地指定了flush()命令,否则关于Session何时会执行这些JDBC调用完全是无法保证的,只能保证他们执行的前后顺序。
参考来源:http://blog.csdn.net/dingxingmei/article/details/9022597
Nhibernate 使用 (二)的更多相关文章
- NHibernate初学二之简单执行SQL及HQL、Linq
上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...
- 跟我学 NHibernate (二)
1. 在 NHibernate 中使用事务, 主要代码如下: #region 事务 public IList<Customer> GetAll() { // 开启事物 using (ITr ...
- NHibernate系列学习(二)-使用sql和hql以及linq
1.本文主要介绍了NH的三种查询方式 2.界面查看 3.代码架构 4.代码详情 namespace KimismeDemo { public partial class Form2 : Form { ...
- ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL
前面的两篇文章中.我们对NHibernate已经做了大致了解 <ORM利器:NHibernate(一)简单介绍>Nhibernate的作用:攻克了对象和数据库的转化问题 <ORM利器 ...
- NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作
环境:   Visual Studio 2010 一.Mindscape.NhibernateModelDesigner安装   在打开 ...
- 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一
细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework ADO.NET Entity Framework 是微软以 ADO.N ...
- [Nhibernate]SchemaExport工具的使用(二)——创建表及其约束、存储过程、视图
目录 写在前面 文档与系列文章 表及其约束 存储过程 视图 总结 写在前面 由于一直在山西出差,有几天没更新博客了.昨晚回到家,将博客园最近三天更新的文章搜集了一下,花费了半天的时间,看了看,有些文章 ...
- [Nhibernate]二级缓存(二)
目录 写在前面 文档与系列文章 更新数据 二级缓存管理 总结 写在前面 本篇文章也算nhibernate入门系列的结尾了,在总结nhibernate系列的过程中,遇到了很多问题,学习的过程也是解决bu ...
- Nhibernate初入门基本配置(二)
转载地址http://www.cnblogs.com/kissdodog/p/3306428.html 使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学 ...
随机推荐
- gson常用的方式
gson提供的fromJson()方法来实现从Json相关对象到Java实体的方法. 第一种.Json格式转成单一实体对象和转换成对象列表或者其他结构 第二种.转换成列表类型 注:TypeToken: ...
- 不同系统下的字长------typedef的意义
int的字节长度是由CPU和操作系统编译器共同决定的, 一般情况下,主要是由操作系统决定,比如,你在64位AMD的机器上安装的是32位操作系统,那么,int默认是32位的:如果是64位操作系统,64位 ...
- 建立ftp服务器的网址
https://jingyan.baidu.com/article/574c5219d466c36c8d9dc138.html
- wrk编译报错gcc: Command not found
报错信息如下: 问题原因:没有安装gcc 解决办法: yum -y install gcc+ gcc-c++ 若需升级gcc,则采用如下命令: yum -y update gcc
- jzoj6099. 【GDOI2019模拟2019.4.1】Dist
题目链接:https://jzoj.net/senior/#main/show/6099 考虑直接统计某个点到其它所有点的距离和 我们先把整个团当成一个点建图,处理出任意两个团之间的距离\(dis(i ...
- 来自多校的一个题——数位DP+卡位
n<=1e9就要考虑倍增.矩阵乘法这种了 假设L=0 考虑枚举二进制下,所有X与R的LCP长度,前len高位 对于第len+1位,假设R的这一位是1 如果一个x的这一位是0了,那么后面可以随便填 ...
- Linux 配置vim编辑器
最终效果 步骤1.下载NERDTree插件安装包(vim目录插件) https://www.vim.org/scripts/script.php?script_id=1658 步骤2.在家目录创建 . ...
- Linux记录-open-falcon开源监控系统部署
参考https://book.open-falcon.org/zh_0_2/quick_install/prepare.html一.安装后端1.环境准备yum -y install redisyum ...
- Servlet中转发和重定向的路径问题【转】
转发和重定向的路径问题 Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获 ...
- java代码调用第三方接口
一.利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数) pu ...