hibernate4学习笔记
Hibernate4学习笔记
本⼈全部以⾃学为主,在⽹上收集各种学习资料,总结归纳学习经验,现将学习路径给予⼤家分享。
此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截⽌2015年7⽉31⽇最新版),JAVA的版本是:java8.0,使⽤的开发⼯具是:Eclipse Mars Release (4.5.0)。
第⼀天:Hibernate4基础知识和HelloWorld简单编程
Hibernate是⼀种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。ORM 采⽤元数据来描述对象-关系映射细节, 元数据通常采⽤XML 格式, 并且存放在专门的对象-关系映射⽂件中。
HelloWorld简单编程
1、准备Hibernate环境
(1)导⼊Hibernate的Jar包,如下:
(2)导⼊Mysql驱动包,我⽤的数据库是:Mysql 5.0,数据库驱动包如下:
以上所有Jar加完毕之后,需要加⼊到Eclipse⾃⾝系统⾥⾯,具体如下:
以上操作完毕之后,Hibernate的环境就算搭建完毕,下⾯就可以进⼀步操作。
2、配置l
⽂件,主要是对数据库的连接,具体如下:
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"www.doczj/doc/63fa364d5022aaea998f0fde.html /hibernate-configuration-3.0.dtd ">
root
mysql
name="connection.driver_class"&sql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)
name="dialect">org.hibernate.dialect.MySQLInnoDBDialect
true
true
update
3、编写⼀个实例类News.java,具体代码如下:
package com.hibernate.helloworld;
import java.sql.Date;
public class News {
private Integer id;
private String title;
hibernate要学多久private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public News(String title, String author, Date date) { super();
this.title = title;
this.author = author;
this.date = date;
}
public News(){
}
@Override
return"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";
}
}
4、创建l
配置映射⽂件,具体代码如下:
"www.doczj/doc/63fa364d5022aaea998f0fde.html /hibernate-mapping-3.0.dtd">
5、将映射⽂件l
指定到
l
配置⽂件⾥⾯,即在
l⽂件⾥加⼊⼀⾏映射代码,具体如下:
6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;
import java.sql.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.Test;
public class HibernateTest {
@Test
public void test() {
//1. 创建⼀个 SessionFactory 对象
SessionFactory sessionFactory=null;
//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对
象关系映射信息
Configuration configuration=new Configuration().configure();
/
/4.0 之前这样创建
//sessionFactory=configuration.buildSessionFactory();
//2). 4.0以后创建⼀个 ServiceRegistry 对象: hibernate 4.x 新添加的对象
//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.
ServiceRegistry serviceRegistry=new
ServiceRegistryBuilder().Properties() ).buildServiceRegistry();
sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;
//2. 创建⼀个 Session 对象
Session session=sessionFactory.openSession();
//3. 开启事务
Transaction transaction=session.beginTransaction();
/
/4. 执⾏保存操作
News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));
session.save(news);
//5. 提交事务
www.doczj/doc/63fa364d5022aaea998f0fde.html mit();
//6. 关闭 Session
session.close();
//7. 关闭 SessionFactory 对象
sessionFactory.close();
}
}
7、测试结果如下:
(1)数据库⾥⾯的结果如下:
(2)Eclipse下的语句⽣成如下:
以上就是简单Hibernate的测试,总结:1、不需要在数据库⾥⾯创建任何数据,由hibernate ⾃动⽣成;2、代码简单易理解,不复杂,测试数据只需要先创建以下⼏个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写⼀条SQL语句,反⽽Hibernate帮我们⽣成SQL语句。
第⼆天:了解Hibernare的六⼤核⼼接⼝(重点掌握Session接⼝和Query接⼝)Hibernate有6个核⼼接⼝⼏乎在任何实际开发中都会⽤到。通过这些接⼝,不仅可以存储和获得持久对象,并且能够进⾏事务控制。根据Hibernate的调⽤顺序作如下具体介绍:
1、Configuration 接⼝
Configuration 接⼝的作⽤是对Hibernate 进⾏配置,以及对它进⾏启动。在Hibernate 的启动过程中,Configuration 类的实例⾸先定位映射⽂档的位置,读取这些配置,然后创建⼀个SessionFactory对象。虽然Configuration 接⼝在整个Hibernate 项⽬中只扮演着⼀个很⼩的⾓⾊,但它是启动hibernate 时所遇到的每⼀个对象。
Configuration有以下⼏个⽅⾯的操作函数:
(1)、为Configuration指定映射⽂件
你可以直接实例化Configuration来获取⼀个实例,并为他指定XML映射定义⽂件如果映射定义⽂件在类路径中,请使⽤addResource()。
Configuration cfg =new Configuration().addResource("com/demo/hibernate/beans/l");
(2)、为Configuration指定持久化类
⼀个替代的⽅法是指定被映射的类让Hibernate帮你寻映射定义⽂件Configuration cfg = new
Configuration().addClass(www.doczj/doc/63fa364d5022aaea998f0fde.html er.class);
Hibernate将会在类路径中需名字为/com/demo/hibernate/beans/l 映射定义⽂件,消除了任何对⽂件名的硬编译。
(3)、为Configuration指定配置属性
Configuration也允许指定配置属性
Configuration cfg =new Configuration().addClass(www.doczj/doc/63fa364d5022aaea998f0fde.html er.class)
.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
.setProperty("tion.datasource","java:comp/env/jdbc/test")
.setProperty("der_update","true");
在Hibernate的启动与开发流程中要使⽤⼀个Configuration 需要为他设置三个⽅⾯的
内容:数据库连接属性、*.l⽂件、POJO类
其中,第⼆个和第三个只需要设置⼀,就会⾃动需另⼀个,因为这两者只需⼀个。
第⼀种⽅式是使⽤l 该⽂件设置了数据库连接的属性和l映射⽂件配置hibernate会⾃动加载该配置属性,并⾃动到POJO 因此要取得Configuration对象只需要简单的创建改对象即可
Configuration cfg = new Configuration();
第⼆种⽅式是通过hibernate.properties 省略
第三种⽅式是完全在构造时进⾏硬编码设置设置过程如下所⽰
Configuration cfg =new Configuration()
.addClass(www.doczj/doc/63fa364d5022aaea998f0fde.html er.class)
.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect")
.setProperty("tion.datasource","java:comp/env/jdbc/test")
.setProperty("der_update","true");
第⼀种⽅式是我们最常⽤的⽅式
2、ServiceRegistry接⼝
在Hibernate ORM 4 ⾥⾯推荐的⽅式是org.hibernate.cfg.Configuration#buildSessionFactory(ServiceRegistry serviceRegistry), 需要先构造⼀个ServiceRegistry 对象。那么, 神马是ServiceRegistry? 顾名思义, ServiceRegistry 是Service 的注册表, 它为Service提供了⼀个统⼀的加载/ 初始化/ 存放/ 获取机制。所有基于Hibernate 的配置或者服务都必须统⼀向这个ServiceRegistry 注册后才能⽣效。
⾸先来看看⼀个整体的类图:
整个ServiceRegistry 结构和我们⼤家了解的Classloader 的代理结构类似, 只不过和Classloader 的⾸先代理给⽗节点,⽗节点不到再从本级的Classloader 中查的策略不同,ServiceRegistry 是先从本级节点查,不到再去⽗亲中查。
hibernate⾥⾯的ServiceRegistry实际上是由三层(范围)组成的:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论