ORM(Object/Relationship Mapping):对象 / 关系映射
利用面向对象映射编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,于是要编写很多和底层数据库相关的SQL语句
Hibernate是Java领域的一款开源的ORM框架技术
Hibernate对JDBC进行了非常轻量级的对象封装
持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
Hibernate Tools是由JBoss推出的一个Eclipse综合开发工具插件,该插件可以简化ORM框架Hibernate
编写第一个Hibernate例子
创建Hibernate的配置文件(hibernate.cfg.xml)
创建持久化类
创建对象-关系映射文件
通过Hibernate API编写访问数据库的代码
导入Hibernate必须的jar包(hibernate-release-4.2.4.Final\lib\required)
导入Mysql的JDBC驱动
导入Junit4的jar包
第一步:创建Hibernate的配置文件(hibernate.cfg.xml)
<property name="connection.username">root</property>(表示要连接的数据库的用户名)
<property name="connection.password">cao123</property>(密码)
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>(指定数据库的jdbc驱动)
<property name="connecion.url">jdbc:mysql://localhost/hibernate?useUnicode=true&characterEncoding=UTF-8</property>(访问数据库的地址)(数据库是本地)(问号后面是避免中文乱码问题)
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>(指定方言)
一般还要加上:
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create</property>hibernate.show显示SQL语句
hibernate.format——sql排版
hbmddl.auto表结构生成策略 create先删除表再建 update只更新
hibernate.dialect数据库方言
第二步:创建持久化类
javabeans设计原则
1.公有的类
2.提供公有的不带参数的默认的构造方法
3.属性私有
4.属性setter/getter封装
第三步:创建对象-关系映射文件
session可以理解为操作数据库的对象
session与connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用
把对象保存在关系型数据库中需要调用session的各种方法,如:save(),update(),delete(),等
hibernate的执行流程:
@Before
public void init() {
Configuration config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
@After
public void destroy() {
transaction.commit();//提交事务
session.close();//关闭会话
sessionFactory.close();//关闭会话工厂
}
@Test
public void testSaveStudents() {//生成学生对象
Students s = new Students(3, "张三丰", "男", new Date(), "武当山");
session.save(s);//保存对象进入数据库
}
配置对象:Configuration 读取配置文档(hibernate.cfg.xml)
Configuration创建sessionFactory 加载关系映射文件
sessionFactory创建session对象:类似于jdbc中的connection
session开启事务:执行数据库操作
Hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中