HIbernate完整入门版

Hibernate是一个持久层的对象关系映射(ORM)框架,简单来讲Hibernate框架是一个与数据库产生交互的框架,可以通过hibernate框架对数据库进行增删改查操作。
hibernate工具包下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/。
主要分为:documention:hibernate开发文档;lib:hibernate开发包;project:hibernate项目
简单项目的编辑:
1.导入jar包,完成操作环境的搭建
在这里插入图片描述jar包包括:mysql驱动包;hibernate开发包;日志记录包
2.在数据库中创建一张表
3.创建实体类,完成set/get/toString方法

public class Try {
	private String id;
	private String name;
	private String age;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Try [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

4.完成hibernate中对hibernate映射文件以及核心配合文件的.xml配置
4.1xx.hbm.xml的配置(hibernate的映射配置文件的配置,主要是让类与数据库中的表产生连接)

`<?xml version="1.0" encoding="UTF-8"?>
<!-- hibernate中的约束 -->
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    <!-- 类与表的映射   class:类的全路径    table:表名 -->
    <class  name="com.hibernate.Try"  table="try">
    <!--类属性和表中主键的对应  name:类属性名   column:表中字段名  -->
    <id  name="id"  column="id">
    <!---generator主键生成机制->
    <generator  class="native"/>
    </id> 
    <!-- 普通的类属性和表的字段的对应 -->
    <property  name="name"  column="name" ></property> 
    <property  name="age"  column="age" ></property> 
     </class>
    </hibernate-mapping>

4.2xxx.cfg.xml(hibernate核心配置文件的配置)

<?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">
<hibernate-configuration>
	<session-factory>
		<!-- 连接数据库基本操作 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///try</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 配置Hibernate方言 -->
		<property name="hibernate.dialect ">org.hibernate.dialect.MySQLDialect</property>
		<!-- 打印sql -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化sql -->
		<property name="hibernate.format_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- 配置C3P0连接池 -->
		<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!--在连接池中可用的数据库连接的最少数目 -->
		<property name="c3p0.min_size">5</property>
		<!--在连接池中所有数据库连接的最大数目 -->
		<property name="c3p0.max_size">20</property>
		<!--设定数据库连接的过期时间,以秒为单位, 如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
		<property name="c3p0.timeout">120</property>
		<!--每3000秒检查所有连接池中的空闲连接 以秒为单位 -->
		<property name="c3p0.idle_test_period">3000</property>
		<!-- 引入映射文件.hbm.xml    文件的路径 -->
		<mapping resource="com/hibernate/xxx.hbm.xml" />
	</session-factory>
</hibernate-configuration>

5.编写测试代码,完成操作

public class Hibernatedemo {
	//增加
	@Test
	public void demo1() {
		//加载hibernate核心配置文件.cfg.xml
		Configuration cfg = new Configuration().configure();
		//创建sessionfactory工厂
		SessionFactory sf = cfg.buildSessionFactory();
		//开启session
		Session session = sf.openSession();
		//手动开启事务
		Transaction transaction = session.beginTransaction();
		
		Try try = new Try();
		try.setName("try");
		session.save(try);
		
		//事务提交
		transaction.commit();
		//资源关闭
		session.close();
	}

	// 查询
	@Test
	public void demo2() {
		Configuration cfg = new Configuration().configure();
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();

		Transaction tran = session.beginTransaction();
		Try Try = session.get(Try.class, 7);
		System.out.println(Try);

		tran.commit();
		session.close();
	}

	// 修改
	@Test
	public void demo3() {
		Configuration cfg = new Configuration().configure();
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();
		Transaction tran = session.beginTransaction();

		// 先查询,再修改
		Try try1 = session.get(Try.class, 7);
		try1.setId(8);
		session.update(try1);

		tran.commit();
		session.close();
	}

	// 删除操作
	@Test
	public void demo4() {
		Configuration cfg = new Configuration().configure();
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();
		Transaction tran = session.beginTransaction();

		Try try3 = session.get(Try.class, 7);
		session.delete(try3);

		tran.commit();
		session.close();
	}

	// 查询所有
	@Test
	public void demo5() {
		Configuration cfg = new Configuration().configure();
		SessionFactory sf = cfg.buildSessionFactory();
		Session session = sf.openSession();
		Transaction tran = session.beginTransaction();
		
		//HQL
		Query query = session.createQuery("form  Try");
		List<Try> list = query.list();
		for (Try try : list) {
			System.out.println(try);
		}
		
		tran.commit();
		session.close();
	}
}

初步阶段完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值