Hibernate的xml配置和注解配置

入门

是一种全自动的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与持久化的关系:对象持久化的一种解决方案,通过将关系数据库的表与程序的类映
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不掉发的陳不錯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值