数据库中 @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语句到数据库

  1. 如果找不到对象,则报错(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配置与事务管理的更多相关文章

  1. 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题

    问题描述: Error occured processing XML 'org/aopalliance/intercept/MethodInterceptor'. See Error Log for ...

  2. 事务管理(下) 配置spring事务管理的几种方式(声明式事务)

    配置spring事务管理的几种方式(声明式事务) 概要: Spring对编程式事务的支持与EJB有很大的区别.不像EJB和Java事务API(Java Transaction API, JTA)耦合在 ...

  3. 配置spring事务管理的几种方式(声明式事务)

    Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSo ...

  4. Hibernate入门(五)---------事务管理

    在Hibernate中,可以通过代码来操作管理事务,如通过“Transaction tx = session.beginTransaction()”,开启一个事务,持久化操作后,通过"tx. ...

  5. spring和hibernate整合,事务管理

    一.spring和hibernate整合开发步骤 1 引入jar文件,用户libarary列表如下 //spring_core spring3..9core\commons-logging-1.2.j ...

  6. hibernate添加spring 事务管理注意问题记录

    今天弄了一天的hibernate添加事务的问题 首先,建立的是一个java工程,把hibernate添加进工程里,很容易就可以写一个增删改查的方法.索性就多加点东西,把接口,抽象类也加到里面,自己看着 ...

  7. hibernate中的事务管理是怎么概念?

    1.JDBC事务 JDBC 事务是用 Connection 对象控制的.JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交. ja ...

  8. 。。。Hibernate 查询数据 事务管理。。。

    在Hibernate中,查询数据的时候,可能会需要事务的管理,为什么呢?因为在查询数据库的时候,Hibernate将数据从数据库里面查询出来之后,会先把数据放入Hibernate的session缓存里 ...

  9. Hive记录-配置支持事务管理hive-site.xml

    <property> <name>hive.support.concurrency</name> <value>true</value> & ...

随机推荐

  1. 1、Python环境安装部署

    一.环境准备 1.下载Python安装包(至官方网站) https://www.python.org/downloads/ 建议下载安装最新版 2.设置"环境变量" "我 ...

  2. delphi 类方法、类变量、类常量、类属性的研究,自己的研究

    群里我师傅给我的答案: unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Vari ...

  3. 扩展jquery的选择器

    I’m sure you all know that it’s possible to create plugins and extend various aspects of the jQuery ...

  4. AJAX04 JQ的AJAX

    一.jQuery中的Ajax 1.jQuery为我们提供了更强大的Ajax封装 $.ajax({}) 可配置方式发起Ajax请求 $.get() 以GET方式发起Ajax请求 $.post() 以PO ...

  5. MySQL连接线程kill利器之pt-kill

    如何每10秒检查一次,杀死指定用户超过100秒的查询? pt-kill \ --no-version-check \ --host 127.0.0.1 --port 3306 --user 'xxxx ...

  6. Entity Framework走马观花之把握全局 (转)

    上一篇<Entity Framework技术导游系列开篇与热身 > ========================================= 在深入学习某项技术之前,应该努力形成 ...

  7. svg绘制圆弧

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. C# 导入EXCEL 报错外部表不是预期的格式错误 .

    错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel “Externa ...

  9. Servlet学习三——传输文件

    最先在考虑传输文件时,想通过java写一个文件上传案例,传给Servlet,Servlet再保存至数据库中,但苦于一直没找到实例,听说Flex有实际的例子,就直接用Flex例子来测试了.本文的顺序为: ...

  10. C#连接Sql Serve数据库及增,删,改操作

    一:连接. string sqlconn = "server=主机名;database=数据名;integrated security=true" //integrated sec ...