Hibernate配置与事务管理
数据库中 @num:代表一个变量
Set @num = 10;
Select @num+@num from dual; dual:临时表
得到结果 20
Hibernate:运用数据持久化,使用ORM框架
JSP:java server page
ORM:object relationship mapping
Hibernate:对JDBC进行轻量级的对象封装,可取代CMP(容器管理持久化),完成数据持久化的重任
JDBC:java数据连接技术 java database connection
Hibernate入门:
1.O/R Mapping:对象-关系映射,使用元数据(meata data)描述对象与数据库间的映射
2.Entity Bean :重量级框架
3.JDO:java database object OJB:java桥接技术
4.JPA:java持久化API(应用程序接口)
开发Hibernate的第一步:
1.导入包require文件夹(必要)
2.创建实体对象
3.在src下面创建xml(hibernate.cfg.xml)-----导入dtd(基本配置文件----链接数据库)
<hibernate-configuration>
<session-factory>
<!--配置方言 告诉hibernate是哪个数据库-->
<property name=”dialect”>org.hibernate.dialect.MySqlDialect</property>
<!--配置mysql驱动-->
<property name=”connection.driver.class”>com.mysql.jdbc.Driber</property>
<!--配置mysql的url地址 注意不要空格-->
<property name=”connection.url”>jdbc:mysql://127.0.0.1:3306/text</property>
<!--配置mysql的使用名称 注意不要空格-->
<property name=”connection.username”>root</property>
<!--配置mysql的密码 注意不要空格-->
<property name=”connection.password”>qwe</property>
<!--配置显示sql语句-->
<property name=”show_sql”>true</property>
<!--自动创建一个表 create没有则创建,每次只有一次,会打印sql语句;update:没有则创建,有则直接用,不会打印sql语句-->
<property name=”hbm2ddl.auto”>update</property>
<!--格式化sql语句-->
<property name=”format-sql”>true</property>
<!--映射orm的xml student.hdm.xml-->
<mapping resource=”com/my/cfg/studnet.hdm.xml”/>
</session-factory>
</hibernate-configuration>
4.实体类中必须设置get/set;必须提供一个默认空的构造函数;如果是集合:一般用set集合
集合:set(不能重复) list(能重复);对象实现可序列化(serializable)
5.创建一个实体数据关系映射 对象名称.hbm.xml(链接对象) DTD:文档类型 DDL:数据库定义语言
<!--packpage 对包文件进行映射-->
-------不写table=”t_student”/column=”sid”等,默认表对应类名,属性对应列名
<hibernate-mapping package=”com.my.bean”>
<!--对哪个实体bean进行映射 name必须对应的类的名字 table对应你要映射的表名-->
<class name=”student” table=”t_student”>
<!--对应表的标识符 id对应属性的id(标识符) type 可选择项-->
<id name=”id” column=”sid” type=”java.lang.Integer”>
<!--配置主键的生成策略 自动增长id-->
<generator class=”increment”></generator>
</id>
<!--name为对象中的属性名,column对应表中的列名-->
<property name=”name” column=”name” type=”java.lang.string”></property >
<property name=”birthday” column=”birthday”></property >
</class>
</hibernate-mapping>
http(session):与用户打交道的session
hibernate中的session:与数据库打交道
事务与数据库打交道
数据库中的执行的一系列操作看做一个整体作为一个事务,要不全部执行成功,要不全部执行失败;----事务
MySQL默认事务自动提交
Show variables like ‘%auto%’;
Set autocommit = 0;默认事务提交
Rollback;回滚
Commit;提交-----不能再实现回滚
Savepoint nine;-----设置一个保存点,备份
Rollback to nine;----回滚到nine所保存的数据
Lock table 表名 write;-----锁表
Unlock tables;-----解锁表
Set names utf-8;------设置中文的字符集
POJO:javaBean
VO:value object DO:database object DTO:database translet object数据传输对象
Teacher t = new Teacher();
增加:session.save(t);
1.增加时,直接添加id;
session.saveorupdate(t);
1.增加时,如果有id时,则不添加,可修改数据;
查询:Teacher t = (Teacher) session.get(Teacher.class,1);
Teacher t1 = (Teacher)session.get(Teacher.class,1);
1.只有一条数据,但是从缓存中取得第二条的数据;不管用不用数据,都会在数据库中提取数据
2.如果找不到对象,则返回null
Teacher t = (Teacher) session.load(Teacher.class,1);
1.load中存在懒加载;当没有使用对象时,不会在数据库中提取数据,当使用对象时,才发送sql语句到数据库
- 如果找不到对象,则报错(objectNotFoundException)--------找不到对象
Teacher t = new Teacher(“xiaoming12121”);
瞬时态:1.new的对象
2.还未与session相关联,还不能持久化到数据库中
Session.save(t);
持久态:1.与session相关联
2.在数据库中有与之对应的数据
Session.close();
脱管态:1.与数据库中有与之对应的数据
2.与session断开连接
3.已经提交
实体关系映射:一对一/一对多/多对多
主键:跟业务不挂钩,不轻易变动的数据
主键关联:主键对主键
<!--必须依赖person的id的值-->
在配置一对一中的id时,
生成策略:
<generator class=”foreign”>
<param name=”property”>person</param>
</generator>
<onetoone name=”IDcard” class=”包名.类名” constrained=”true” ></onetoone>
另一个表:
<onetoone name=”person” class=”包名.类名” cascade=”IDcard”></onetoone>
外键关联:外键对主键
在IDcard中:
<many-to-one name=”person” column=”p_id” class=”包名.类名” unique=”true”></many-to-one>
在双向关联时:(外键建多方,Inverse建在一方,控制权交给多方) Inverse:反转
1.加载配置 configuration
2.生成一个session工厂
3.获得session
openSession():每次都获得一个新的连接/getCurrentSession():每次都是同一个session
4.开启一个事务(添加回滚,提交)
Hibernate配置与事务管理的更多相关文章
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
问题描述: Error occured processing XML 'org/aopalliance/intercept/MethodInterceptor'. See Error Log for ...
- 事务管理(下) 配置spring事务管理的几种方式(声明式事务)
配置spring事务管理的几种方式(声明式事务) 概要: Spring对编程式事务的支持与EJB有很大的区别.不像EJB和Java事务API(Java Transaction API, JTA)耦合在 ...
- 配置spring事务管理的几种方式(声明式事务)
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSo ...
- Hibernate入门(五)---------事务管理
在Hibernate中,可以通过代码来操作管理事务,如通过“Transaction tx = session.beginTransaction()”,开启一个事务,持久化操作后,通过"tx. ...
- spring和hibernate整合,事务管理
一.spring和hibernate整合开发步骤 1 引入jar文件,用户libarary列表如下 //spring_core spring3..9core\commons-logging-1.2.j ...
- hibernate添加spring 事务管理注意问题记录
今天弄了一天的hibernate添加事务的问题 首先,建立的是一个java工程,把hibernate添加进工程里,很容易就可以写一个增删改查的方法.索性就多加点东西,把接口,抽象类也加到里面,自己看着 ...
- hibernate中的事务管理是怎么概念?
1.JDBC事务 JDBC 事务是用 Connection 对象控制的.JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交. ja ...
- 。。。Hibernate 查询数据 事务管理。。。
在Hibernate中,查询数据的时候,可能会需要事务的管理,为什么呢?因为在查询数据库的时候,Hibernate将数据从数据库里面查询出来之后,会先把数据放入Hibernate的session缓存里 ...
- Hive记录-配置支持事务管理hive-site.xml
<property> <name>hive.support.concurrency</name> <value>true</value> & ...
随机推荐
- sql2008r2-vs2013安装下载
vs2013链接:http://www.cnblogs.com/wuyepiaoxue/p/5661174.html sql2008r2链接:http://download.microsoft.com ...
- thinkPHP--SQL连贯操作
一.连贯入门 连贯操作使用起来非常简单,比如查找到 id 为 1,2,3,4 中按照创建时间的倒序的前两 位. //连贯操作入门 $user = M('User'); var_dump($user-& ...
- ThinkPHP单字母函数(快捷方法)使用总结
在ThinkPHP中有许多使用简便的单字母函数(即快捷方法),可以很方便开发者快速的调用,但是字母函数却不方便记忆,本文将所有的字母函数总结一下,以方便以后查找. 1.U() URL组装 支持不同UR ...
- 使用Windows上的Eclipse 远程调试 linux下的Tomcat
1:修改Linux上Tomcat的catalina.sh,第一行添加declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_sock ...
- sass揭秘之@mixin,%,@function
因为文章内含有很多sass代码,如需自己动手查看编译结果,推荐使用sassmeister这款在线编译工具,方便你阅读学习. 在阅读本文章之前,请先确认你已经阅读了上篇文章sass揭秘之变量,不然会给你 ...
- 今天使用bootstrap中的tagsinput控件,碰到个小问题
我直接使用时,后台一直报Uncaught Can't add objects when itemValue option is not set错误, 代码如下: <div> <inp ...
- C# 导入EXCEL 报错外部表不是预期的格式错误 .
错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel “Externa ...
- vim+slimv+sbcl搭建lisp的IDE
流水账而已,分享给需要的人. slimv的首页 http://kovisoft.bitbucket.org/tutorial.html里面介绍说slimv开箱即可用,可是老天总会给一些奇怪的问题给你, ...
- PHP form 表单传参明细研究
GET表单: 复制代码代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- java中的那些坑
最近准备换工作,为了少让人家鄙视,就要狠狠地藐视这些面试题目.找了本电子书,发了有好多坑,都是特别简单,但是很少有人做对的题目.面对这样的题目,我却有一种兴奋的感觉,也许是因为一直做着重复的工作没有新 ...