文档章节

Hibernate CRUD

小代码2016
 小代码2016
发布于 2016/03/09 09:48
字数 672
阅读 55
收藏 2

目录结构:

 

代码:

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- 配置连接数据库的基本信息 -->
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///hone</property>

		<!-- 配置 hibernate 的基本信息 -->
		<!-- hibernate 所使用的数据库方言 -->
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

		<!-- 执行操作时是否在控制台打印 SQL -->
		<property name="show_sql">true</property>

		<!-- 是否对 SQL 进行格式化 -->
		<property name="format_sql">true</property>

		<!-- 指定自动生成数据表的策略 -->
		<property name="hbm2ddl.auto">update</property>

		<!-- 指定关联的 .hbm.xml 文件 -->
		<mapping resource="com/laolang/domain/Student.hbm.xml" />
	</session-factory>
</hibernate-configuration>

 

com.laolang.domain.Student

package com.laolang.domain;

public class Student {

	public Student() {
		super();
	}

	public Student(String name, int age, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", age=" + age
				+ ", sex=" + sex + "]";
	}

	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;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	private int id;
	private String name;
	private int age;
	private String sex;
}

 

com.laolang.student.Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-3-9 8:52:51 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.laolang.domain.Student" table="STUDENT">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="age" type="int">
            <column name="AGE" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" />
        </property>
    </class>
</hibernate-mapping>

 

com.laolang.util.HibernateUtil

package com.laolang.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

	private final static SessionFactory FACTORY = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		Configuration cfg = new Configuration().configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(cfg.getProperties()).buildServiceRegistry();
		SessionFactory factory = cfg.buildSessionFactory(serviceRegistry);
		return factory;
	}

	public static SessionFactory getSessionFactory() {
		return FACTORY;
	}

	public static Session openSession() {
		return FACTORY.openSession();
	}

	public static void close(Session session) {
		if (session != null)
			session.close();
	}
}

 

com.laolang.test.TestCrud

package com.laolang.test;

import java.util.List;

import org.hibernate.Session;
import org.junit.Test;

import com.laolang.domain.Student;
import com.laolang.util.HibernateUtil;

public class Testrud {

	@Test
	public void testAdd() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = new Student("小代码", 23, "男");

			session.save(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testLoad() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();
			Student stu = (Student) session.load(Student.class, 3);
			System.out.println(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testUpdate() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = (Student) session.load(Student.class, 3);
			stu.setAge(66);
			session.update(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@Test
	public void testDelete() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			Student stu = new Student();
			stu.setId(2);
			session.delete(stu);
			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@SuppressWarnings("unchecked")
	@Test
	public void testList() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			List<Student> stus = session.createQuery("from Student").list();
			for (Student u : stus) {
				System.out.println(u);
			}

			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

	@SuppressWarnings("unchecked")
	@Test
	public void testListPage() {
		Session session = null;
		try {
			session = HibernateUtil.openSession();
			session.beginTransaction();

			List<Student> stus = session.createQuery("from Student")
					.setFirstResult(2).setMaxResults(2).list();
			for (Student u : stus) {
				System.out.println(u);
			}

			session.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			if (session != null)
				session.getTransaction().rollback();
		} finally {
			HibernateUtil.close(session);
		}
	}

}

 

需要注意的点:

1、主键修改为native

2、如果是mysql5.5,则修改

 <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>

也就是多了一个5

 

 

© 著作权归作者所有

共有 人打赏支持
小代码2016
粉丝 37
博文 328
码字总数 153495
作品 0
安阳
程序员
私信 提问
Hibernate之CRUD实践

Hibernate作为一个高度封装的持久层框架,曾经是非常牛逼的,现在虽然应用不是特别广,比如我前公司主要是做OA的,应用的框架就是Spring+SpringMVC+Hibernate。 Hibernate与MyBatis相比,虽然...

youcongtech
10/22
0
0
不知道为什么SSH 这么流行

以前曾经用过 SSH 来做程序,有几个感受: Spring: 里面有些不错的最佳实践,这个东西确实比较实用。特别是Spring MVC,加上freemarker非常棒。而且体积很小。 JDBCTemplate 也蛮实用的 Hibe...

宏哥
2010/12/17
9.3K
92
Hibernate Contextual sessions

Hibernate Contextual sessions Contextual sessions:上下文session, 一个session只在一个给点的上下文中有效。 从3.0.1开始,Hibernate添加了SessionFactory.getCurrentSession()方法获取...

LiJIaming
2012/07/01
0
0
baomidou/mybatisplus-spring-boot-starter

#mybatisplus-spring-boot-starter mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不再需拿 MyBatis 和 Hibernate 相比,mybatis-plus 作为 mybati......

baomidou
2017/05/05
0
0
A Note on Hibernate - One To Many

Download hibernate-test.zip - 8.4 KB Introduction This is a note on Hibernate one to many mappings. Background This is a note on Hibernate one to many mappings. Before working o......

Dr. Song Li
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux 设备驱动--- 阻塞型字符设备驱动 --- O_NONBLOCK --- 非阻塞标志

阻塞: 在设计简单字符驱动程序时,要注意一个重要问题. 当一个设备无法立刻满足用户的读写请求时应当如何处理? 例如:调用 read 时没有数据可读,但以后可能会有; 或者一个进程试图向设备写...

天王盖地虎626
9分钟前
0
0
作用域、作用域链精解

首先来几个名词解释: 作用域[scope]:每一个js函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供js引擎存取,[[scope]]就是对象其中一个属性。[[scope]]指的就是我...

IrisHuang
10分钟前
0
0
etcd集群备份和数据恢复

etcd是一个分布式k-v数据库,在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。 本文来自于:https://www.maideliang.com/index.php/archives/25/...

openthings
24分钟前
1
0
「阿里面试系列」面试加分项,从JVM层面了解线程的启动和停止

文章简介 这一篇主要围绕线程状态控制相关的操作分析线程的原理,比如线程的中断,线程的通信等,内容比较多,可能会分两篇文章 阿里面试系列导读:关注我的技术公众号【架构师修炼宝典】一周...

Java架构资源分享
31分钟前
4
0
centos安装confluence全攻略

https://blog.csdn.net/qwer026/article/details/51439076

happyeveryday32
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部