日期:2014-05-20  浏览次数:20701 次

刚学hibernate,谁能大体上教教我?
刚学hibernate,谁能大体上教教我?
求高手简要的说说hibernate,附上代码和流程的最好。
------最佳解决方案--------------------
甄磊
zhenlei@briup.com
jdbc
java java database connectivity
数据持久化:数据的保存
内存中的数据模型==》持久化介质的存储模型
所有对数据的增删改查操作
io ObjectOutputStream
数据库中间键
数据模型==关系模型
对象模型==关系模型
SQL方言
MYSQL:limit
mysql:
JDBC 标准 
第三方类库
数据库厂商

1.注册(加载)驱动
2.创建连接
3.构建statement
4.执行SQL语句
5.如果有结果集,处理结果集 select
6.资源回收

listener control
lsnrctl start

mysql -u root -p;

show detabases;
use databaseName;

show tables;

create table jdbc_test(id int,name varchar(20));
insert into jdbc_test values(1,'briup');

driver:com.mysql.jdbc.Driver
url:jdbcLmysql://localhost:3306/test
user:root
password:空

批处理:
statement:executeXXX 发送一天=条SQL语句到DB
addBatch:不发送SQL语句 绑定批量发送到DB

Statement PrepareStatement(缓冲区) 缓存

1.性能 后者超于前者
2.代码的可读性以及维护性
insert into table_name(col1,col2,col3,col4)
values("+values1+"'+values2'"+"to_date("+...+)"+)


3.安全性 SQL注入


传统方式:单条SQL语句 多次与数据库交互
批处理方式:多条SQL语句一次交互
数据最大:批处理优于传统方式
小数据量:不建议使用批处理

事物的边界:隐式事物,显示事物
begin
1.sqlplus打开会随之开启一个事物
2.上一个事物提交或者rollback

OVER
1.commit //rollback to point
2.DDL DCL
3.推出SQLplus
隔离性:
3.事物隔离级别1 2 4 8
read_uncommited 1
read_commited 2

JDBC 事物默认是自动提交的
Connection
setAutoCommit(false);//事物的开始

conn.commit();事物的提交 over
savepoint

rowid
连接未断开其他队数据库进行的UPDATE操作都会及时的在程序中体现ResultSet随底层数据库库的变化。

ConnectionFactory 12 6步

Query(String sql)


JDBCTemplate
Query
Statement
PrepareStatement

作业:
Employee(e_emp, id last_name,salary) 
e id=1 name=tuotuo salary=1234
Employee findByName(String name);
Employee findByID(Long id);
Void deleteEmp(Employee e);
void addEmp(Employee e);


数据库中间价 hibernate mybatis/ibatis JDBC
对JDBC的封装 事物 映射

hibernate:面向对象 自动进行ORM操作

数据持久化:数据模型==存储模型
对象持久化:对象模型==关系模型


Configuration:初始化hibernate

SessionFactory用来产生session

common-collections;功能更加强大的集合



antkr.jar词法分析器
主键生成策略
hile_test
val 1000

hilo 高低值算法
高值:其实高值由数据库产生,单值单列
低值:程序代码内部维护
生成一个不重复的数字作为数据库记录的主键

3.Session
简单查询:get(id) load
删除delete
更新update
保存(insert)save

User u=session.get(User.class,1l);
u.setName("newName");
User u=new User();
saveOrUpdate()

4.Transaction
增删改查 session.save()
transaction.commit();

5.Query HQL/SQL 查询
2

jar包的作用
1.dom4j.jar:负责解析配置文件以及映射文件 必须
2.slf4j.jar:提供日志记录的jar包,只有接口,实现类需要用户自己指定 必须
3.slf4j-nop.jar:habernate要求slf4j的接口,但是log4j更强大,于是需要

4.common-collections:功能更加强大的集合类 必须
5.hibernate-jpa.jar JPA数据持久化必备  必须
6.javasissit.jar 产生代理对象必须的jar 必须
7.jta:处理transaction
8.antkr.jar词法分析器
SQL: select
HQL:where 把HQL导入SQL中的过程需要antkr.jar


对于一个对象来说
Transient:内存中有  缓存中(Session)没有 DB没有
Persistent:内存中有 缓存中有 DB有
Detached:内存中有  缓存中没有 DB有


一级缓存:Session
二级缓存:SessionFactory
三级(查询)缓存:


这个笔记是我当初自己记录的,可能有点乱,主要讲的是JDBC,因为JDBC是hibernate的基础嘛。另外给你发一个hibernate的例子,你在尝试着做几个简单例子,慢慢的来嘛。