hibernate学习笔记1--------窥探hibernate

ssh的复习进入了数据层的学习hibernate.

哎!!!正所谓:雁过留声,人过留影。欢迎大家留言交流指正

一、引入:
模型不匹配(阻抗不匹配):关系模型与对象模型不匹配
java面向对象语言:
对象模型:其主要概念:继承、关联、多态等;
数据库的是关系模型:其主要概念:表、主键、外键等

解决办法:
1.使用jdbc手工转换。

hibernate学习笔记1--------窥探hibernate_第1张图片
hibernate学习笔记1--------窥探hibernate_第2张图片

2.使用ORM(object Relation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB

二、配置环境

hibernate学习笔记1--------窥探hibernate_第3张图片

hibernate学习笔记1--------窥探hibernate_第4张图片

三、小例子

domain

package cn.itcast.hibernate.domain;

import java.util.Date;

public class User {
	private int id;
	private String name;
	private Date birthday;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
}


映射文件文件作用:
是数据模型与对象模型对应起来




	
		
		
			
			  
		
		
		
		
	





hibernate.cfg.xml



	
		oracle.jdbc.driver.OracleDriver
		jdbc:oracle:thin:@localhost:1521:ORCL
		org.hibernate.dialect.OracleDialect
		websb
		ddit
		create
		
	


简单粗暴的测试类:

package cn.itcast.hibernate;

import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import cn.itcast.hibernate.domain.User;



public class Base {
	public static void main(String []args){
		//对hibernate初始化----注册驱动
		Configuration cfg = new Configuration();
		cfg.configure();
		//工厂类
		SessionFactory sf = cfg.buildSessionFactory();
		
		Session s = sf.openSession();
		//打开事务
		Transaction tx=s.beginTransaction();
		
		User user = new User();
		user.setBirthday(new Date());
		user.setName("name");
		
		s.save(user);
		tx.commit();//提交事务
		s.close();
		System.out.println("end");
		
	}
}


小知识点总结:

(1)///表示的是连接的是本地的默认端口则可以省略
(2)配置sessionFactory中的property属性时,可以缺省hibernate这个开头
(3)hibernate-release-4.2.1.Final\project\etc下有个配置模版hibernate.properties.template
相关属性的值都有
(4)自动创建表属性值解释:
#hibernate.hbm2ddl.auto create-drop 在初始化时创建表,jdbc结束时删除表(一般应用与测试)
#hibernate.hbm2ddl.auto create 在初始化时创建表,jdbc结束时不删除表
#hibernate.hbm2ddl.auto update 拿映射文件和数据库中的表结构进行校验,如果不一致,则进行更新
#hibernate.hbm2ddl.auto valiadate  校验映射文件与表是否能对应起来,不一致报错(4.x的版本中没有此值,疑似删除了)
(5)对于mysql数据库,偶尔不开启事务,依然可以插入数据。请查看表结构(是什么引xing),是否支持事务。不支持事务的表,不能进行回滚。

运行时报的错误:
(1)org.hibernate.service.jndi.JndiException: Error parsing JNDI name [foo]
解决:
http://blog.csdn.net/walldr/article/details/8582581
扩展:
hiberbate的连接池配置:
http://www.cnblogs.com/lihuiyy/archive/2013/03/19/2969870.html
(2) org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00903: 表名无效

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
解决:
http://hi.baidu.com/hohai109/item/44f94ddda0fe18c9251f40ed

(3) Unsuccessful: drop table tb_1User cascade constraints
2013-5-18 23:31:34 org.hibernate.tool.hbm2ddl.SchemaExport perform
ERROR: ORA-00942: 表或视图不存在

网上暂时没搜到解释,估计是在自动创建表之前,先drop一下,因为原来没有所以才报的吧~!

 

你可能感兴趣的:(Hibernate)