Hibernate菜鸟入门,从零开始建立一个测试项目

Hibernate官方手册:http://docs.jboss.org/hibernate/orm/current/quickstart/html_single/#hibernate-gsg-tutorial-basic-test

踩坑心得:官网页面一定要看,英语一定要会,看不懂就慢慢看,真的很有用

为什么要用Hibernate?

java语言是面向对象的,而使用数据库Mysql等关系型数据库时,使用java语言操作关系型数据库是不一致的,使用JDBC操作数据库时非常繁琐,怎么解决呢,当然是通过映射,而Hibernate就很好的解决了这个问题。

Hibernate是一个开放源代码的对象关系映射框架,通过对JDBC进行了轻量级的对象封装,使Java程序员能随心所欲的使用面向对象的编程思维来操作数据库

Hibernate的工作原理:

一、

Hibernate准备:(我使用的开发环境环境是)

1.准备数据库环境:MYSQL5.5

2.准备开发工具:Spring-tool-suite-3.9.4.RELEASE
3.准备数据库的驱动程序::jdbc
4.准备Hibernate包:这里我们使用maven

下载地址:http://maven.apache.org/

安装教程:http://maven.apache.org/install.html

其实安装非常简单:下载完毕解压后就可以了,如果想要测试一下,可以将解压后的文件夹的bin目录配置到环境变量path中,然后在dos命令行测试:

  • 输入: mvn -v

 

5.在sts中集成maven,addapache-maven-3.5.4

 

 

 创建项目:

配置pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xintoucloud</groupId>
  <artifactId>hibernate_test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hibernate_test</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>

	<dependency>
	   <groupId>org.hibernate</groupId>
	   <artifactId>hibernate-core</artifactId>
	   <version>5.3.7.Final</version>
	</dependency>

	<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.47</version>
		</dependency>
  </dependencies>
  <build>
    	<plugins>
	      <plugin>
	        <groupId>org.apache.maven.plugins</groupId>
	        <artifactId>maven-compiler-plugin</artifactId>
	        <version>3.8.0</version>
	        <configuration>
	          <source>1.8</source>
	          <target>1.8</target>
	        </configuration>
	      </plugin>
  	  </plugins>
    </build>
</project>

如果需要修改版本,只需要修改配置文件中的版本号即可,非常方便

创建实体类:

package com.xintoucloud.entity;

public class User {
	private int uid;
	private String uname;
	private String upass;
	private String email;
	private int state;
	
	public int getUid() {
		return uid;
	}
	public void setUid(int uid) {
		this.uid = uid;
	}
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpass() {
		return upass;
	}
	public void setUpass(String upass) {
		this.upass = upass;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public int getState() {
		return state;
	}
	public void setState(int state) {
		this.state = state;
	}
	
}

创建映射文件:

<?xml version="1.0"?>

<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.xintoucloud.entity">

    <class name="User" table="user">
        <id name="uid" column="uid">
            <generator class="native"/>
        </id>
        <property name="uname"  column="uname"/>
        <property name="upass"  column="upass"/>
        <property name="email"  column="email"/>
        <property name="state"  column="state"/>
    </class>

</hibernate-mapping>

创建测试文件

package com.xintoucloud.hibernate_test;


import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.xintoucloud.entity.User;

public class HibernateTest {
	public SessionFactory sessionFactory;
	@Before
	public void setUp() throws Exception {
		//1.读取配置文件,创建SessionFactory
		final StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
				.configure()
				.build();
		try {
			//SessionFactory(创建Session):线程安全,重量级对象,一个数据库只需要创建一个
			
			sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
		}
		catch (Exception e) {
			e.printStackTrace();
			// The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
			// so destroy it manually.
			StandardServiceRegistryBuilder.destroy( registry );
		}
	}
	@After
	public void tearDown() throws Exception {
		if ( sessionFactory != null ) {
			sessionFactory.close();
		}
	}
	@Test
	public void testSave() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		
		User user = new User();
		user.setEmail("user@qq.com");
		user.setState(1);
		user.setUname("jhq");
		user.setUpass("123456");
		//4.执行保存
		session.save(user);
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	@Test
	public void testGet() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		//4.执行查询
		User user=session.get(User.class,13);
		System.out.println("uname:"+user.getUname());
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	@Test
	public void testLoad() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		//load支持lazy(懒加载):执行完load不会立即查询数据库2.查询一条不存在的记录出现ObjectNotFoundException
		User user = session.load(User.class, 13);
		System.out.println(user.getUname()+","+user.getEmail()+","+user.getState());
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	
	@Test
	public void testList() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		//4.执行查询
		List<User> users=session.createQuery("from User").list();
		for (User user2 : users) {
			System.out.println("uname:"+user2.getUname());
		}
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	@Test
	public void testDelete() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		//4.执行查询
		User user=session.get(User.class,12);
		session.delete(user);
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	@Test
	public void testUpdate() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
		//2.打开Session
		Session session = sessionFactory.openSession();
		//3.开启事务
		session.beginTransaction();
		//4.执行查询
		User user=session.get(User.class,13);
		user.setUname("修改后");
		user.setEmail("123456@163.com");
		session.update(user);
		//5.提交事务
		session.getTransaction().commit();
		//6.关闭Session
		session.close();
		
	}
	@Test
	public void testListPage() {
		//Session(执行数据库操作,和HttpSession没有任何关系):线程不安全的,轻量级对象,每个操作就应该使用不同的Session,用来后立即关闭
				//2.打开Session
				Session session = sessionFactory.openSession();
				//3.开启事务
				session.beginTransaction();
				//4.执行查询
				List<User> users=session.createQuery("from User").setFirstResult(0).setMaxResults(5).list();
				for (User user2 : users) {
					System.out.println("uname:"+user2.getUname()+",email"+user2.getEmail());
				}
				//5.提交事务
				session.getTransaction().commit();
				//6.关闭Session
				session.close();
				
			}
}

运行测试文件:

总结:

1.先配置pom.xml文件,添加依赖关系

2.hibernate.apache.org,中找到hibernate的Gav坐标配置到pom.xml文件中,(依赖一)

3.maven.apache.org中找到plugins-compiler-compile using-source and -targetjavac options,配置到文件中

4.mvnrepository.com中搜索mysql,找到对应版本

5.我的是jdk1.8所以junit需要4.8.1,改完之后,更新maven项目

6.按照maven目录的结构创建必要的目录,src/main/resources

7.去官网上下载maven项目的tutorials(模板)就可以开始创建自己的项目了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值