hibernate-基础部分
1、jdbc的缺点:
1、代码比较麻烦
2、不是面向对象编程
3、如果碰到一个很复杂的需求分析,需要很次很数据库交互,这样效率比较低
4、jdbc技术没有做到数据的缓存
2、hibenrnate
1、面向对象的编程
2、缓存
一级缓存 二级缓存 查询缓存
3、代码操作比较简单
4、如果该项目对sql的优化要求特别高,不适合用hibernate
如果数据库的数据量特别大,也不适合用hibernate
3、hibernate的三大要素
1、配置文件
1、数据库的链接信息
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/privatesecretary</hibernate>
2、动态生成表
<property name="hbm2ddl.auto">update</property>
3、引入映射文件
<mapping resource="com/voole/vo/Role.hbm.xml" />
4、输出SQL语句
<property name="show_sql">true</property>
5、格式化SQL语句
<property name="format_sql">true</property>
6、方言
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
6、关于二级缓存的配置
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
7、关于查询缓存的配置
<property name="cache.use_query_cache">true</property>
8、统计机制
<property name="hibernate.generate_statistics">true</property>
9、从当前线程中产生session
<property name="current_session_context_class">thread</property>
2、持久化类
1、必须有默认的构造函数
2、标示符属性为基本类型的包装类或者String类型
3、一般属性
4、集合属性
3、映射文件
1、类与表的对应关系
2、类中的属性名称和表中的字段名称的对应关系
3、类中的属性类型和表中的字段类型的对应关系
4、一对多和多对多的对应关系
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--
class元素描述的就是持久化类
name 类的全名
table 表名 默认值为person
catalog 数据库的名称(最好不写,因为前面的配置文件已设置)
-->
<class name="com.itheima05.hibernate.domain.Person" table="person">
<!--
id 标示符
name 标示符的名称
length 在数据库中该字段的长度(最好要写)
type 类型(可以不写)
column 在表中的列的名字 默认就是name的名称(可以不写)
-->
<id name="pid" length="5" type="java.lang.Long" column="pid">
<!--
主键的生成器
-->
<generator class="increment"></generator>
</id>
<!--
property代表一般属性
-->
<property name="name"
|