博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10/19 duiHibernate 的复习总结
阅读量:4321 次
发布时间:2019-06-06

本文共 3407 字,大约阅读时间需要 11 分钟。

每日对Hbernate 的复习

hibernate 简介:

hibernate 是一个开源框架,它是面想对象的一个开源框架,它对JDBC做了轻量级的封装,而我们java程序员

可以使用面向对象的思想来操纵数据库

一 为什么要使用Hibernate

1.对jdbc访问数据库的代码做了封装,大大简化了数据访问层的繁琐的重复性代码

2.Hibernate是一个基于jdbc的主流框架,这是一个优秀的orm实现,他很大程度简化了dao层的编码工作

二 Hibernate框架的优缺点?

1.Hibernate 功能强大,是java应用关系数据库之间的桥梁,较之jdbc方式操作数据库,代码量大大减少,提高了持久化的代码

降低了维护成本

2.可移植性好。对于修改 /更换 数据库,通常只修改Hibernate配置文件即可

缺点:

不适合大场地

修改删除不适合用hibernate

步骤1 搭配之构建jdbc
<?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>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">happy1</property>
<property name="connection.password">happy1</property>
<!-- SQL dialect SQL方言 -->
<property name="dialect"> org.hibernate.dialect.Oracle10gDialect</property>
<!-- Enable Hibernate's automatic session context management session和当前线程绑定-->
<!--
 如果在Hibernate配置文件中,参数current_session_context_class设置为thread,并采用SessionFactory的getCurrentSession()方法获得Session对象,则不需要执行session.close()方法。
-->
<property name="current_session_context_class">thread</property>
<!--打印sql 控制台-->
<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!--自动构建表结构 create 先delete表结构 再创建,update直接更新表结构-->
<!-- update 加载hibernate自动更新数据库结构 -->
<property name="hbm2ddl.auto">update</property>
<!--关联entity--><!--找小配置-->
<!-- <mapping resource="cn/happy/entity/Dog.hbm.xml"/>-->
<!-- <mapping resource="cn/hql/entity/demp.hbm.xml"/>
<mapping resource="cn/hbm02/dynamic/Emp.hbm.xml"/>-->
<!--<mapping resource="cn/hbm03happ/manyone/Dept.hbm.xml"/>
<mapping resource="cn/hbm03happ/manyone/Emp.hbm.xml"/>-->
<!-- <mapping class="cn.hbm07.People"/>
<mapping class="cn.hbm07.Card"/>-->
<!-- <mapping resource="cn/hbm03happ/onetomanydouble/Dept.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/onetomanydouble/Emp.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/manytomany/Employee.hbm.xml"></mapping>
<mapping resource="cn/hbm03happ/manytomany/Project.hbm.xml"></mapping>-->
<!-- <mapping class="cn.hbonetomany.Dept"/>
<mapping class="cn.hbonetomany.Emp"/>-->
<mapping class="cn.hbmanytomany.Student"/>
<mapping class="cn.hbmanytomany.Teacher"/>
</session-factory>
</hibernate-configuration>

主键生成策略 :

identity

identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。

<id name="id" column="id">

<generator class="identity" />

</id>

特点:只能用在支持自动增长的字段数据库中使用,如MySQL。

注释方式与配置文件底层实现方式相同,只是配置的方式换成了注释方式

自动增长,适用于支持自增字段的数据库

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

native

native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。

<id name="id" column="id">

<generator class="native" />

</id>

 

@Test

public void test03(){
//Configuration 接口类 可以new
Configuration cfg=new Configuration().configure();//1
//session对象
SessionFactory factory=cfg.buildSessionFactory(); //2
Session session = factory.openSession(); //3

Dog dog=session.load(Dog.class,1);

System.out.println(dog.getDogname());
session.close();
/*
* 所有增删改操作
* */
}

 

转载于:https://www.cnblogs.com/hualishu/p/7693248.html

你可能感兴趣的文章
五. k8s--service学习笔记
查看>>
二. k8s安装过程
查看>>
jenkins pipeline 使用遇到的问题
查看>>
四. k8s--pod控制器
查看>>
一. python数据结构与算法
查看>>
django模型内部类meta解释
查看>>
v-for(:key)绑定index、id、key的区别
查看>>
el-tree文本内容过多显示不完全问题(解决)
查看>>
el-table翻页序号不从1开始(已解决)
查看>>
vue-cil 打包爬坑(解决)
查看>>
定位问题 vue+element-ui+easyui(兼容性)
查看>>
四叶草(css)
查看>>
nginx——前端服务环境
查看>>
vue+element-ui 字体自适应不同屏幕
查看>>
Vue 循环为选中的li列表添加效果
查看>>
vue创建脚手架 cil
查看>>
ArcGIS分支版本化( Branch Versioning )技术介绍
查看>>
scrapy过滤重复数据和增量爬取
查看>>
scrapy-redis源码浅析
查看>>
tupian
查看>>