资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,hibernate 入门与配置,还记得,JDBC,吗,在我们讲hibernate之前先回顾JDBC与数据库打交道的过程,创建一个以JDBC连接数据库的程序,包含7个步骤,1加载JDBC驱动程序:Class.forName(com.mysql.jdbc.Driver),2 提供JDBC连接的URL,3 创建数据库的连接:向java.sql.DriverManager请求并获得Connection对象,DriverManager的getConnectin(String url,String username,String password)方法传入指定的欲连接的数据库的路径、数据库的用户名和密码,创建一个Statement,Statement stmt=con.createStatement();,5 执行SQL语句 ,ResultSet rs=stmt.executeQuery(SELECT*FROM.);,6 处理结果:while(rs.next(),String name=rs.getString(name);,String pass=rs.getString(1);/此方法比较高效,7、关闭JDBC对象:操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,传统JDBC的缺点?,程序员,在,用面向对象的方式编写程序,当要访问数据库时,使用JDBC时无可避免地需要写SQL语句,,sql语句并不是面向对象的语言,。,写sql语句的过程中,需要知道表的结构,比如insert(属性1,属性2.),这样造成写sql语句很麻烦,而且表与表之间的差别很大,。此过程要求程序员必须对数据库中表结构十分了解,ORM,OMR(Object Relation Mapping对象关系映射),主流的ORM框架有hibernate、toplink、OJB,接下来就是hibernate了.,hibernate是什么?,Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的,使用对象编程思维来操纵数据库,。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。,什么意思(_图1,由图中可以知道hibernate的几个核心接口,Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration,(打开图2),Session接口,Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。),SessionFactory接口,SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。,Configuration接口,Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。,Transaction接口,Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。,Query和Criteria接口,Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。,Session save()方法会直接把我们创建的对象放到数据库里面。不需要sql语句,hibernate一端连着面向对象的写法,一端连着面向关系的数据库,打开hibernate,介绍目录。等下要用到目录下的一些东东,Doc 文档,Eg 例子,Ect 配置文件,Grammar 语法,Lib 依赖的jar包,Src 完整源代码,Test 测试用例,Hibernate3.jar 完成关系对象映射,开始配置(helloworld小程序),安装好eclipse(可以是MyEclipse)和MySQL(可以是其他的数据库管理系统),我的实验中使用的是MyEclipse6.*和MySQL。,(1)建立新的java项目(实例中取名为Hibernate_Helloworld),(2)导入所需要的jar包(演示,注意三个地方,:,lib、hibernate3.jar、数据库驱动),(myeclipse下自带有jpi,可以让其自动导入jar包,实验中使用的是导入jar包的方式),(3)在MySQL中建立对应的数据库以及表(数据库,test,表student(id int primary key,name varchar(20),age int)),(4)建立student类,建立在com.hibernate.model包下面,(无格式的javabean(除了属性、构造函数和get、set方法,没有其他的多余的属性和方法),注意第三步和第四步,我们的目的是把,student,实体类与数据库,student,表建立联系,使得对,student,表的操作转化成对student实体类面向对象的方法操作,比如我们向表中添加数据的时候能够直接调用save()方法把一个对象添加到数据库中的表),配置文件是干嘛的?(与数据库连接;很多的数据库以及告诉数据库必要信息,比如用户名和密码),名字是约定俗成的,并没有很严格的要求,完成了与数据库的连接,只需要填写相应的配置信息,可以去hibernate目录下的/ect下随便找到一个,hibernate的配置信息很多,具体配置信息可以参考/ect下的hibernate.properties文件,另外一种是hibernate.properties,但是xml文件的可读性更高,可以根据需要是否显示sql语句(可选,),true,com.mysql.jdbc.Driver,jdbc:mysql:/localhost/hibernate,root,891226,方言(识别是哪种sql语言),org.hibernate.dialect.MySQLDialect,根据需要建表(hbm2ddl.auto 要不要hibernate自动帮你生成建表语句),(参考文档1),罗列映射文件(实体类与数据库之间是怎么关联的,假如数据库里面有很多个表,那我的这个类到底对应哪个表呢,类与表之间到底是哪个属性对应哪个属性呢),(,接下来就讲映射文件。),映射文件是干嘛的(表、属性),约定俗成将这个映射文件与实体类放在同一个包下面,还有可以取其他的名字,但是最好是养成好的风格,建立的映射文件与实体类同名,基本内容,包名,映射文件的根元素,映射的是哪个目录下的类,表与类的对应关系,哪个类对应哪个表,这句话的意思是我的Student类跟你的student表对应,在默认情况下,也就是没有写table=。的情况下,hibernate会假设实体类的名字和表名一样,数据库的表名是不区分大小写的。所以,如果两个名字一样,就可以不需要写table=这一项。,字段映射,标签表示映射主键,这句话中name=id中的id指的是我的实体类中的的getid的返回的id。同意的对应的column字段指的是数据库中的,如果在两者名字相同的情况下,这个也可以省略,定义常规属性,总结,回顾一下。,整个过程比较简单,也就是需要配置文件和映射文件。,需要动手写的东东比较少。,谢谢,!,
展开阅读全文