Hibernaate 详解
hibernate.cfg.xml
连接数据库:
connection.username 数据库的名称。这是我自己的是luwei
connection.password 数据库的密码 luwei
connection.driver_class 数据库连接驱动 com.mysql.jdbc.Driver
connection.url 数据库连接的URL jdbc:mysql:///luwei 数据库方言:
dialect org.hibernate.dialect.MySQL5InnoDBDialect
控制台打印SQL
show_sql true
格式化SQL(就是美化SQL)
format_sql true
自动生成表
hbm2ddl.auto update 创建后就不会删除已有的行和列
create 每次都重新生成一个表
create-drop sessionFactory 关闭后就删除
指定程序需要的对象---关系映射文件
<mapping resource="com/hibernate/helloworld/News.hbm.xml"/>
2:每个类是什么含义?
Configuration类:
加载hibernate.cfg.xml文件。负责管理Hibernate的配置信息。 持久化类与数据表的映射关系。
创建Configuration : Configuration configuration = new Configuration().configure();
configure()方法的源码:
public Configuration configure() throws HibernateException {
        configure( "/hibernate.cfg.xml" );
        return this;
    }
SessionFactory接口:
创建ServiceRegistry对象:
//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.
ServiceRegistry serviceRegistry =
new ServiceRegistryBuilder().applySettings(configuration.getProperties())
.buildServiceRegistry();
创建SessionFactory:
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session:
Session 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作。
此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection。
创建Session:
Session session = sessionFactory.openSession();
常用方法:
取得持久化对象的方法 get() load()
保存。save() 更新。update() saveOrUpdate() 删除。delete()
开启事务:beginTransaction()
管理session:isOpen() flush() clear() evict() close()
Transaction(事务)
   代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。 
  创建:
//3. 开启事务
Transaction transaction = session.beginTransaction();
事务常用的方法:
commit():提交关联的session实例。
rollback():撤销事务操作。
wasCommitted():检查事务是否提交。
Hibernaate 详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
		示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ... 
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
		一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ... 
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
		前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ... 
- Java 字符串格式化详解
		Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ... 
- Android Notification 详解(一)——基本操作
		Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ... 
- Android Notification 详解——基本操作
		Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ... 
- Git初探--笔记整理和Git命令详解
		几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ... 
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
		Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ... 
- Node.js npm 详解
		一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ... 
随机推荐
- boost multi array
			Boost MultiArray is a library that simplifies using arrays with multiple dimensions. 1. #include < ... 
- Java IO流总结(二)-示例
			1.使用文件操作的9大方法完成文件的判断 判断文件或目录是否存在 : exits() 返回值boolean型 * 判断是否是文件: isFile() boolean * 判断是否是目录: isDiec ... 
- Mac 上使用svn 记录
			.启动svn服务器 svnadmin create /Users/liuwei/Desktop/svn/UI 如果本地有 UI这个目录了就不用再运行 使用这句就可以了 svnserve -d -r / ... 
- 四轴PID思路整理
			参考资料: https://blog.csdn.net/nemol1990/article/details/45131603 https://blog.csdn.net/qq_27114397/art ... 
- WCDB错误"No matching constructor for initialization of 'WCTColumnBinding'"
			开始看到这个错误有点匪夷所思,完全不知道问题指向哪里, 最后用过排除法,把之前建立多个类进行了一一排除,发现有个属性是 @property(nonatomic, assign) NSInteger * ... 
- lombda 使用记录
			,,,}; String str1 = Arrays.stream(arr).boxed().map(i -> i.toString()) //必须将普通数组 boxed才能 在 map 里面 ... 
- JavaScript 类型浅解
			对于JavaScript 类型,可简单地概括为:相对于强类型语言来说,它是弱(松散)类型的语言:有基本类型和引用类型,他们是区别是一个有固定空间存在于栈内存中,一个没有固定空间保存在堆内存中并且在栈内 ... 
- Flask Session ,pymysql ,wtforms组件 虚拟virtualenv venv
			https://www.cnblogs.com/wupeiqi/articles/5713330.html session def create_app(): print() app=Flask(__ ... 
- JQuery实现页面跳转
			$(function(){ var pn = $("#gotopagenum").val(); //#gotopagenum是文本框的id属性 location.hre ... 
- multiprocessing的Process类的简单使用
			''' 跨平台的进程创建模块(multiprocessing) 支持跨平台 :window/linux multiprocessing提供一个Process类来代表一个进程对象 ''' from mu ... 
