Hibernate Helloworld实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/R812656252/article/details/83929475

Hibernate简介

    Hibernate是一个流行的ORM框架。通过Hibernate可以通过Java中的对象来间接操纵数据库中的表。

使用xml来体验Hibernate

    使用Maven来创建一个Hibernate基本项目,通过Student对象,对mysql数据库中tb_student表来进行CRUD操作。

      1. 引入Maven依赖 

         引入hibernate核心包,mysql连接以及用于测试的junit包。

<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.java1234.hibernate</groupId>
	<artifactId>HelloWorld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>HelloWorld</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>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>4.3.0.Final</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.3</version>
		</dependency>

	</dependencies>
</project>

      2. hibernate.hbm.xml文件

            hibernate.hbm.xml是项目级的Hibernate默认配置文件,包含数据库连接配置,方言配置等等。

            详细内容:https://blog.csdn.net/R812656252/article/details/83956633

<?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.username">root</property>
    		<property name="hibernate.connection.password">123456</property>
    		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db_hibernate</property>
    		
    		<!-- 是否在控制台输出hibernate所执行的SQL语句 -->
    		<property name="show_sql">true</property>
    		
    		<!-- 选择与开发环境适配的方言包 -->
    		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    		
    		<!-- 配置是否如何更新数据库表结构 -->
    		<property name="hbm2ddl.auto">create</property>
    		
    		<!-- 需要交由hibernate解析的mapping文件 -->
    		<mapping resource="com.java1234.hibernate.model.student.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration>

      3. Student.java

package com.java1234.hibernate.model;

public class Student {

	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

      4.student.hbm.xml

         Java中pojo与数据库表的映射文件,通过本文件来提示Hibernate在数据库中如何创建对应的表。

         详细内容:https://blog.csdn.net/R812656252/article/details/83956659

<?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">
    <hibernate-mapping>
    	<class name="com.java1234.hibernate.model.Student" table="tb_student">
    		<id name="id" column="stuId">
    			<generator class="native"/>
    		</id>
    		<property name="name"/>
    	</class>
    
    </hibernate-mapping>

      5. 使用Hibernate API

         通过调用Hibernate提供的API,来对数据库进行相应操作。

         - HibernateUtil.java / 获得SessionFactory对象

package com.java1234.hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {

	private static SessionFactory sessionFactory = HibernateUtil.buildSessionFactory();
	
	private static SessionFactory buildSessionFactory(){
		Configuration configuration = new Configuration().configure();
		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
		return configuration.buildSessionFactory(serviceRegistry);
	}
	
	public static SessionFactory getSessionFactory(){
		return sessionFactory;
	}
}

           - HibernateTest.java / 使用Session对象体验CRUD操作

package com.java1234.hibernate.HelloWorld;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.java1234.hibernate.HibernateUtil;
import com.java1234.hibernate.model.Student;

public class HibernateTest {

	private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
	
	private Session session = null;
	
	//在每次执行之前通过sessionFactory得到session对象
	@Before
	public void setUp() throws Exception {
		session = sessionFactory.openSession();
		
	}

	//在执行完操作之后关闭session以及sessionFactory
	@After
	public void tearDown() throws Exception {
		session.close();
		sessionFactory.close();
	}

	//创建一张新的表:保存一个空的student对象
	@Test
	public void testCreate() {
		session.beginTransaction();
		Student student = new Student();
		session.save(student);
		session.getTransaction().commit();
	}

	//插入一条数据:保存一个有值的对象
	@Test
	public void testInsert(){
		session.beginTransaction();
		Student student = new Student();
		student.setName("Robin");
		session.save(student);
		session.getTransaction().commit();
	}
	
	//更新某条记录,先通过主键查询 返回一个对象,然后修改这个对象后保存
	@Test
	public void testUpdate(){
		session.beginTransaction();
		Student s = (Student) session.get(Student.class, 1);
		s.setName("Mary");
		session.save(s);
		session.getTransaction().commit();
	}
	
	//删除某条记录,先通过主键查询 返回一个对象,然后调用delete方法
	@Test
	public void testDelete(){
		session.beginTransaction();
		Student s = (Student) session.get(Student.class, 1);
		session.delete(s);
		session.getTransaction().commit();
	}
}

使用annotation来体验Hibernate

   通过使用HIbernate提供的注解标签,可以将**.hbm.xml中的配置,在定义pojo时一并定义。

    1. 引入Maven依赖

    2. hibernate.hbm.xml文件

        在使用注解时引入。

<mapping class="com.java1234.hibernate.model.Teacher"/>

    3. Teacher.java

         使用Hibernate中提供的注解,生成一个我们想要的数据库表

         注解详细内容:

package com.java1234.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="tb_teacher")
public class Teacher {
	
	private int id;
	
	private String name;
	
	@Id
	@GeneratedValue(generator="_native")
	@GenericGenerator(name="_native",strategy="native")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

4. 测试CRUD

猜你喜欢

转载自blog.csdn.net/R812656252/article/details/83929475