Hibernate
入门
是一种全自动的ORM映射,自动生成sql,而Mybatis是半自动的需要手写sql语句;后面还有Hibernate的升级版本JPA(无配置)

主要工作过程:
区别Mybatis主要在于中间的类-表之间的映射文件xml

Hibernate的优点:
- 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
- 使用java的反射机制,而不是字节码增强程序类实现透明性
- 最终生成sql语句并执行,性能较好
- 灵活性高,支持各种关联关系
- 支持多种数据库类型,使用hibernate开发的程序可以在不同数据库中移植

基础配置及使用
其中要注意表之间的对应关系(一对一、一对多、多对多)
使用hibernate操作数据库的步骤:
- 导入hibernate相关包
- 创建数据库表对应的类
- 创建对象关系映射文件
- 创建hibernate主配置文件,并配置hibernate访问数据库的基本信息(如数据库地址、用户名、密码等)
- 调用ORM接口完成数据库操作
其中pojo里面的实体类和对应的xml文件都可以一起自动生成(数据库可以逆向生成类,反之是正向生成数据库)
基础配置及用法讲解示例:
主配置文件hibernate.cfg.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url"> <!-- 连接数据库并解决乱码问题 -->
<![CDATA[jdbc:mysql://localhost:3306/jkstudy?useUnicode=true&characterEncoding=utf8]]>
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver <!-- 连接数据库的驱动 -->
</property>
<property name="myeclipse.connection.profile">
myshujuku <!-- 自动生成的(不重要) -->
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="com/cwl/study/pojo/Student.hbm.xml" /> <!-- 加载分/子配置文件 -->
</session-factory>
</hibernate-configuration>
Student实体类略
其对应的映射文件Student.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.cwl.study.pojo.Student" table="student" catalog="jkstudy">
<id name="sid" type="java.lang.Integer">
<column name="sid" />
<generator class="identity" />
</id>
<property name="sname" type="java.lang.String">
<column name="sname" />
</property>
<property name="ssex" type="java.lang.String">
<column name="ssex" />
</property>
</class>
</hibernate-mapping>
测试类对数据库的增删改查操作:
public class Test {
public static void main(String[] args) {
Configuration cfg=new Configuration().configure("hibernate.cfg.xml"); //读取配置文件
SessionFactory sf=cfg.buildSessionFactory(); //构建SessionFactory工厂
Session session=sf.openSession(); //创建与数据库之间的会话
//查
Student stu=(Student) session.get(Student.class, 1);
System.out.println(stu);*/
//增
Transaction t=session.beginTransaction(); //开启事务,注意用什么框架就导什么框架的包
Student stu=new Student("大傻子","男");
session.save(stu); //通过session保存
t.commit(); //提交事务,增删改需要有事务并提交
session.close(); //先开后闭原则
sf.close();*/
//删
Transaction t=session.beginTransaction();
Student stu=(Student) session.get(Student.class, 4); //先查出来再删,4是主键
session.delete(stu);
t.commit();
session.close();
sf.close();*/
//改
Transaction t=session.beginTransaction();
Student stu=(Student) session.get(Student.class, 6); //先查出来再改,6是主键
stu.setSname("傻子");
session.update(stu);
t.commit();
session.close();
sf.close();
}
}
对象持久化
- 持久化(Persistence): 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制,文件IO也是一种持久化机制。保存到内存为非持久化数据。
- 对象持久化: 将对象中的属性信息进行解析,并保存到可永久保存的存储设备中(一般是数据库)。用于保存信息的对象称为持久化对象。ORM与持久化的关系:对象持久化的一种解决方案,通过将关系数据库的表与程序的类映

最低0.47元/天 解锁文章
679

被折叠的 条评论
为什么被折叠?



