Hibernate
标签: JAVA框架
hibernate
jdbc缺点
1 编程的时候很繁琐,用的try catch 比较多
2 jdbc没有做数据缓存
3 没有做到面向对象编程
4 sql语句的跨平台性差
hibernate 特点
1 完全面向对象编程
2 hibernate缓存 一级缓存 二级缓存 查询缓存
3 编程的时候比较简单
4 跨平台性
5 使用场合 企业内部的系统
hibernate 缺点
1 效率比较低
2 表中的数据如果在千万级别,则hibernate不合适
3 如果表与表之间的关系特别复杂 则hibernate不合适
hibernate 环境搭建
1 创建工程
2 导入jar包
antlr-2.7.6.jar 语言转换工具 hibernate使用它实现hql到sql的转换
commons-collections-3.1.jar apache的工具集 用来增强java对集合的处理能力
javassist-3.9.0.GA.jar 代码生成工具
jta-1.1.jar 标准的java事务处理接口
hibernate3.jar 核心包
slf4j-log4j12.jar 日志系统
mysql-connector-java-5.1.10-bin.jar mysql的驱动包
3 创建hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!--
一个sessionFactory代表数据库的一个连接
-->
<session-factory>
<!-- 链接数据库的用户名 -->
<property name="connection.username">root</property>
<!-- 链接数据库的密码 -->
<property name="connection.password">123456</property>
<!-- 链接数据库的驱动 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/jdbc01
</property>
<!-- 方言
告诉hibernate使用什么样的数据库 ,hibernate会在底层拼接不同的sql语句
-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!--
根据模型类生成表 这个类叫做 持久化类
根据持久化类生成表的策略:
validate 通过映射文件检查持久化类与表的对应关系
update 每次hibernate启动的时候,检查表是否存在,如果不存在,创建,如果存在,则什么都不做
create每次hibernate启动的时候 根据持久化类生成表
create-drop
-->
<property name="hbm2ddl.auto">update</property>
<mapping resource="com/cd/domain/Person.hbm.xml" />
</session-factory>
</hibernate-configuration>
主要的用途 告诉hibernate链接的数据库信息,用的是什么样的数据库根据持久化类和映射文件生成表的策略
4 持久化类和映射文件
5 生成表
sessionFactory
1.hibernate中的配置文件,映射文件,持久化类的信息
2.sessionFactory中存放的信息都是共享的信息
3.一个hibernate框架只有一个sessionFactory
sSession
1.得到一个session,相当于打开了一个数据库的链接
2.在hibernate中,对数据的crud(增删改查)操作都是由session来完成的
save 方法 把一个持久化类的对象添加到数据库
get 方法 从数据库中根据主键提取出一个对象
update 方法 更新对象到数据库
delet 方法 删除 对象
transation
hibernate的事物默认不是自动提交的,需要我们手动提交事物后,数据库才更新